Version for x32, x64 and xp32
This is the build from the original source code
using vc2019 so may be need new lib from ms (look for vc2019 redist x32 and x64)


---------------------

- The general changelog is now available here: https://github.com/trzy/Supermodel/releases 
- The detailed changelog can be found in the file changes.txt

---------------------
Commit 4e5905f on 2025-09-23 by Bart Trzynadlowski

## September 23, 2025
- `build.yml`: Delete `Supermodel.ini` after validation to prevent it from being included in release packages.
- Added required `changelog.sh` for package creation via `pkg build` target.
- Replaced `std::strcpy` with `strcpy` to potentially fix build issues on Ubuntu.
- Fixed SDL include path on macOS to allow imgui to build.
- Added GitHub Actions for building release packages on pushes to `master`.
- Updated Makefiles: macOS no longer requires `libAGL`; improved GitHub Actions support.
- Added `pkg/` to `.gitignore`.
- Merged `master` branch from [trzy/Supermodel](https://github.com/trzy/Supermodel).
- Introduced a GUI for Supermodel. Launches with no command-line parameters to maintain compatibility with old loaders/frontends.

## September 20, 2025
- Merged pull request #260 from `laromicas/patch-1`.  
  Updated `README.md`.

## September 17, 2025
- Merged `master` branch from [trzy/Supermodel](https://github.com/trzy/Supermodel).
- Increased tolerance for floating-point comparisons in shaders. Fixes potential visual artifacts.

## September 15, 2025
- Fixed macOS build failure due to lingering Framework links in `ppcd`.

## August 19, 2025
- Improved lighting model for pixels with alpha. Fixes edge cases in Daytona rendering.

## August 6, 2025
- Updated `README.md`.  
  Added required library for Linux compilation.

## May 28, 2025
- Merged `master` branch from [trzy/Supermodel](https://github.com/trzy/Supermodel).
- Fixed missing include.
---------------------
Commit: 587da80e51cbf5443e27a02d99d7287645983793
Author: Bart Trzynadlowski
Date:   Thu Apr 24 17:44:21 2025 -0700

- Fix ppcd build on macOS
- Fix SDL2 framework fetch (fixes build on macOS)
- .gitignore: Exclude Config/Supermodel.ini and .DS_Store
- Merge branch 'master' of https://github.com/trzy/Supermodel
- Fix crash bug upon emulator restart. Add the config registers and write
pointers to the file saves. This will make save states incompatible with
older versions.
- ppcd now built with Supermodel and fixed warnings in PPCDisasm.cpp and check for Reuslt::OKAY
---------------------
Commit: 002540c598255ba4dfe2a189f6f05756a9360b64
Author: Ian Curtis
Date:   Sun Apr 20 21:49:20 2025 +0100

- These states could be handled better
---------------------
Commit: bb35a8acf7d6174baa2962b23b7a950b0d0272cd
Author: Ian Curtis
Date:   Sat Apr 19 12:37:15 2025 +0100

- Remove dead code
- Sega bass fishing is flipping the block culling state multiple times in the
same frame (in between memory writes). In multi-threaded mode this can cause
the screen to flash like crazy, so we just sync this state at the start of
the frame. The state can't cancel a frame that is currently rendering so
it's probably fine to sync here.
- m_blockCulling must be initialised
- These should be thread safe
- The real3d gpu can accept data for a new frame whilst rendering the current.
It copies this data to the start of the low culling ram. Previously we
staggered the frame to get the writes to fall into the correct frame, but
doing this meant the tilegen was out of sync with the 3d hardware. Fixing
this allows us to get the tilegen to draw when it's meant to draw, which
fixes the missing 2d animations in scud race.
---------------------
Commit: 210fa3d153460b84b12a2671895674ac931cc7c1
Author: Ian Curtis
Date:   Thu Apr 10 22:55:08 2025 +0100

- Workarounds no longer required.
- Merge branch 'master' of https://github.com/trzy/Supermodel
---------------------
Commit: 0e23b969ab82dee2f4c94cd52c4e1572a92c499e
Author: Ian Curtis
Date:   Sat Apr 5 17:55:18 2025 +0100

- Merge branch 'master' of https://github.com/trzy/Supermodel
- Fix the emulator crashing the driver when going fullscreen. Also don't
delete the 3d class when going fullscreen because then we lose the internal
state and get stuck with a white screen.
---------------------
Commit: 5318f13354929b8191c90a531bbdc60da0e77971
Author: Bart Trzynadlowski
Date:   Fri Apr 4 20:02:51 2025 -0700

- Info log NVRAM and save states
- Makefiles: DEBUG option now builds a debug build, EXTRA_DEBUG enables frame analyzer, 
and removed deprecated NEW_FRAME_TIMING flag
- Merge branch 'master' of https://github.com/trzy/Supermodel
- Fix a corner case with the quad shader where the attribute interpolation can be bad. (toxieainc)
---------------------
Commit: 12e3b6ad1eb5291ae04224ffac5f82d412c3614c
Author: Ian Curtis
Date:   Mon Mar 31 19:14:12 2025 +0100

- Merge branch 'master' of https://github.com/trzy/Supermodel
- Fix a corner case with the quad shader where the attribute interpolation can be bad. (toxieainc)
---------------------
Commit: 90b5bfcc1781d0922e91f246f865ccc18e94f4d8
Author: Bart Trzynadlowski
Date:   Sat Mar 22 11:17:26 2025 -0700

- Merge pull request #236 from trzy/bart/consistent-decay
- Common digital sensitivity and decay speed settings for all digital buttons
mapped to analog inputs
- Fix broken copy command in build bot script
- Introduced InputDigitalSensitivity and InputDigitalDecaySpeed settings for
all non-keyboard digital inputs mapped to analog inputs; key settings remain
and take precedence for keyboard keys
- Merge pull request #235 from trzy/bart/ini-file
- Write default Supermodel.ini if not present 
- Write default Supermodel.ini if not present and remove it from distribution
- Merge pull request #233 from aderumier/sdlgamecontroller
- sdl: add support for gamecontroller api
- currently, supermodel only implement the sdl joystick api.
- That mean that if we use different controllers, they need to be correctly
remapped && calibrate each time.
- This patch implement sdl gamecontroller api, through "InputSystem =
sdlgamepad" config which normalize the mapping && calibration.
- gamecontroller is matching x-input on windows, so the limit is 6 axis (with
2 separated Z triggers axis), 4 dpad/hats and 16 buttons. (x-input is
limited to 10buttons).
---------------------
Commit: 112e7bb9b4ac666c987e0b60c54a86038ed0ad41
Author: dukeeeey
Date:   Thu Feb 27 14:43:04 2025 +0000

- Merge pull request #234 from gm-matthew/tile-pairs
- Fixing tilegen bugs in Scud Race
- Fixing tilegen bugs in Scud Race Fixed the long-standing "rolling start"
glitch in all versions of Scud Race, and also a more recent sky background
overdraw bug in credits of Super Beginner track in Scud Race Plus
- Removed "rolling start" patches from Scud Race ROMs since they are no longer needed
---------------------
Commit: e9f50fe13ae4b455158fda94988a668c23d0840f
Author: Bart Trzynadlowski
Date:   Fri Feb 21 14:44:44 2025 -0800

- Merge pull request #231 from gm-matthew/white-flash
- Fixed JTAG config parameters when loading savestates
---------------------
Commit: 6a8de59aa9fef216ff27b375b7609f56c13b6595
Author: Bart Trzynadlowski
Date:   Tue Feb 18 19:09:19 2025 -0800

- Merge pull request #229 from gm-matthew/white-flash
- Implement "Block Culling" modeword bit of Mercury ASIC
- Added "white flash" support for legacy renderer
- Implement "Block Culling" modeword bit of Mercury ASIC Disables 3D rendering
and clears screen to white
- Added option to turn off if desired; set NoWhiteFlash to true in
Supermodel.ini or add -no-white-flash to command line
---------------------
Commit: d43fd3eccb77e1b83abe027089278d3d974970b6
Author: Bart Trzynadlowski
Date:   Tue Feb 11 16:19:58 2025 -0800

- Merge pull request #225 from gm-matthew/scsp
- Improved soundboard IRQ handling
---------------------
Commit: d043dc0c6a99f5fff87d7044e85a608508eae7e1
Author: dukeeeey
Date:   Mon Nov 25 23:25:33 2024 +0000

- Merge pull request #213 from toxieainc/quad_fix
- Improve edge test precision of quad test, and add missing '----'-area
- Merge branch 'master' of https://github.com/trzy/Supermodel
- Improve viewport precision. (toxieainc)
---------------------
Commit: 4e7356ab2c077aa3bc3d75fb6e164a1c943fe4c1
Author: Bart Trzynadlowski
Date:   Wed Nov 6 16:53:42 2024 -0800
- Merge pull request #216 from toxieainc/ppc_rounding_fixes
- Properly enable fesetround/fegetround usage
- Merge pull request #217 from jflatt/xdg
- Add xdg base dirs
- avoid set_rounding_mode and check fpscr directly
- Revert "Add fallback in case neither .config or XDG environment variables exist"
- This reverts commit ad642ceeb91d21616b6688131013086ef1b944fb. Not needed
- Add fallback in case neither .config or XDG environment variables exist
- Add xdg base dirs
- make fselx more robust against NaNs in combination with compilers/options that may ignore NaNs/switch orders on comparisons follows fselx spec
- fix wrong clamping for fctiw(z)x if clamping values that are <-2^31
- 0x000800000000000 -> 0x0008000000000000. In addition it checked if the remaining frac bits are 0, but due to the IEEE spec these can be used for a payload.
- On top, optimize the other fp64 special case testing functions
- properly enable fesetround/fegetround usage according to the C++ spec
 - unfortunately, e.g. MSVC ignores this pragma, so use what MSDN suggests in that case (GCC and clang may still require -frounding-math for compilation of at least this file)
- in addition, do not set fesetround mode once, but just each time before eachmath op that requires it otherwise other Supermodel code may use the wrong
rounding modes (as it relies by default on it being FE_TONEAREST) note that changing the rounding mode is extremely rare, so this will not affect Supermodels performance by much
- and fix additional minor issue in ppc_fctiwx
- this fixes #203, maybe other emulation+math precision issues, too
- Delete unused file
---------------------
Commit: e2538e2043fdaaed29a35e9acca36439de04a80b
Author: Ian Curtis
Date:   Sun Oct 20 00:28:53 2024 +0100

- Delete unused file
- Merge branch 'master' of https://github.com/trzy/Supermodel
- Update visual studio project files for latest SDL version
---------------------
Commit: 9a07f086246c9188129da9679a58377eaeb88656
Author: dukeeeey
Date:   Sun Oct 13 22:55:39 2024 +0100

- Merge pull request #211 from toxieainc/update_ext
- Update external libs
- fix missing header
- update to latest from official repo
- update to latest via official zlib
- latest minimp3, incl. all patches collected via
https://github.com/manxorist/minimp3/blob/openmpt/minimp3.h
..as original repo is dead
- Merge pull request #205 from toxieainc/more_analysis_fixes
- More static analysis fixes
- Merge pull request #208 from toxieainc/dpi_awareness
- DPI awareness
- remove __restrict
- Flag SDL window as DPI-aware, otherwise the window content might be scaled
by some windows graphics drivers addresses #206
- more fixes from recommendations
- more static analysis, especially missing member initialization
---------------------
Commit: 64a7e353966db7dc31e2e9a99a3bc0edbe855025
Author: Ian Curtis
Date:   Sat Oct 5 12:55:14 2024 +0100

- add missing header
- Merge pull request #202 from toxieainc/analysis_fixes
- Static Analysis
- some more from the review
- address reviews
- address mostly harmless things found by static analysis
---------------------
Commit: 161f1e39b43828fc81462d3903f5b233432515b3
Author: dukeeeey
Date:   Mon Sep 30 22:19:15 2024 +0100

- Merge pull request #198 from toxieainc/sleep_tweak
- improve SuperSleepUntil implementation
- only use SDL_CPUPauseInstruction if it exists
- use SDL_CPUPauseInstruction
- improve SuperSleepUntil implementation: 1) as found in lots of experiments
done for the VPX and PinMAME projects, Sleep() on windows can oversleep for
over 1ms, especially when doing Sleep(>1) 2) thus loop Sleep(1) and end if
its less than 2ms 3) in the spin to wait for the rest of the time, insert
yield(=_mm_pause) or the determined by the Rust devs arm64 equivalent
- this actually gets rid of micro-stutter on my AMD based minipc e.g. in Daytona2
- then also use same Sleep() implementation in the network code (to avoid
potential sideeffects between the 2 implementations)
---------------------
Commit: 6da55ab0bc0472dbf0724c89c98f040744e63d9a
Author: dukeeeey
Date:   Fri Sep 27 16:27:57 2024 +0100

- Merge pull request #197 from toxieainc/upscale_options
- Implement different upscaling filters for the 2D layers
- change default to bilinear
- Merge pull request #196 from toxieainc/corruption_fixes
---------------------
Commit: 9724c3e205a33d8c7e814df10db58295d5b0d943
Author: dukeeeey
Date:   Mon Sep 23 22:37:39 2024 +0100

- fix some warnings, including potential stack corruption by (v)sprintf
---------------------
Commit: 8fd480fc7e99735579290e008925bb90332bdb30
Author: Ian Curtis
Date:   Sun Sep 22 22:38:08 2024 +0100

- Merge branch 'master' of https://github.com/trzy/Supermodel
- Fix some unitialised class variables
- Merge pull request #195 from toxieainc/crtcolors
- Implement CRT color emulation
- address review and change to CRT color variants to enum and ifdef within shader
- so not scanlines or the other CRT aspects, just the differences in the
region-specific TV color standards this means one can choose between 6
different mappings now: 0=none (as before/default) 1=ARI/D93 (recommended
for all JP developed games) 2=PVM_20M2U/D93 3=BT601_525/D93 4=BT601_525/D65
(recommended for all US developed games) 5=BT601_625/D65 (recommended for
all EUR/AUS developed games)
- wired into the supersampling summation pass, as this is the final output pass
---------------------
Commit: 8e7b8506ff0c0f2b0ed994205e4108bc387fab16
Author: dukeeeey
Date:   Wed Sep 18 23:42:42 2024 +0100
- Merge pull request #194 from toxieainc/compositing_optimization
- Merge pull request #193 from toxieainc/aa_fix
- Fix texel offsets when sampling the AA buffer
- Increase precision and performance for Base/Alpha Layer compositing
- Fix texel offsets when sampling the AA buffer
---------------------
Commit: c499584ffefad9ab4d275467d3c8be2a9b07ba2a
Author: Bart Trzynadlowski
Date:   Sun Sep 15 14:33:13 2024 -0700

- Merge pull request #192 from DirtBagXon/print-gl-info
- Fix -print-gl-info after fb785b36bd70c16001336e22a75950ba5ef3808f
- Use ValueAsDefault
- Fix -print-gl-info after fb785b36bd70c16001336e22a75950ba5ef3808f
---------------------
Commit: 9d09b0717d175cbc403180eebc1a6ece4a7936e4
Author: dukeeeey
Date:   Thu Sep 12 00:25:02 2024 +0100

- Merge pull request #191 from gm-matthew/debugger
- Fix debugger build
- use correct GetUniformLocation
- Fix some uninitialised variables
- Fix regression
- Must use the correct call type otherwise it's invalid
- Fix build after merge
- Use strong type for result instead of bool
---------------------
Commit: 856e96be1043d5fdcb2d6ea3d521316d733b5962
Author: dukeeeey
Date:   Fri Sep 6 20:59:46 2024 +0100

- Merge pull request #188 from toxieainc/optimize_depthstencil
- slightly optimize depth & stencil usage
- use only a single glReadPixels for LOS avoid creating a depth/stencil buffer
in the New3D mode wire error handling for CreateFBO(DepthCopy) handle black
FB init for triple buffering
---------------------
Commit: 6d1af82077baeed8ed4213e559e03dd51b135ef5
Author: Bart Trzynadlowski
Date:   Mon Sep 2 15:51:40 2024 -0700

- Merge pull request #186 from gm-matthew/poll-inputs
- Poll inputs before running frame
- Poll inputs before running frame Should reduce latency somewhat. Thanks star69rem
---------------------
Commit: dc1479ff178b592d6817906d1eb5100cf4e9921f
Author: Ian Curtis
Date:   Wed Aug 28 23:30:15 2024 +0100

- Merge branch 'master' of https://github.com/trzy/Supermodel
- Port the GLSL tilegen code back to to software.
This is so we can draw the raster lines at the correct times. A few games
(scud) are updating the tilegen mid frame. Currently these effects are
missing from supermodel. All the efficiency of h/w rendering goes out the
window when trying to render scan lines.
---------------------
Commit: 28474af78cb321468e9945fa9e6581646f73f3d9
Author: Bart Trzynadlowski
Date:   Fri Aug 23 09:28:28 2024 -0700

- Merge pull request #182 from gm-matthew/JTAG
- New JTAG implementation
- Delete BitRegister source files
- Update Rules.inc
- Added comments to new JTAG class Removed old BitRegister class as it is no longer used
---------------------
Commit: 6638c847c6061f5248e7fe0f7b86f3ff744fa259
Author: Ian Curtis
Date:   Sat Aug 17 17:56:24 2024 +0100

- Fix build in vs. Upgrade to c++20?
---------------------
Commit: 2df8511e569ecf8371c3586df85ccc83ecf8795c
Author: Bart Trzynadlowski
Date:   Fri Aug 11 11:56:12 2024 -0700

- Music.xml: Added Daytona 2 and Sega Rally 2 tracks
– Rules.inc: Restored ‘release’ target for Supermodel3.com-hosted builds and added some comments
– Update copyright date
– Improved Makefiles (from h0tw1r3’s PR): macOS Makefile will download SDL2 Framework, hopefully fixed Musashi dependency issues that occasionally affect parallel builds
- Update README.md: Copyright updated to 2024
- MpegAudio.cpp: Comment out debug logging of music start offsets
- Added support for custom MPEG music in a new Music.xml config file
---------------------
Commit: ce9809c4d7505a291720fd76da0672b2d3d8673b
Author: dukeeeey
Date:   Fri Aug 2 08:03:06 2024 +0100

- Step15Luminous() applies to all polys, not just textured ones
- Merge pull request #173 from gm-matthew/textureNP
- New textureNP implementation. This new implementation uses the previously
unused viewport parameter "cota"
---------------------
Commit: 3d8557dc440669975b708efb486e0eb86276e4d8
Author: Ian Curtis
Date:   Mon Jul 29 10:54:59 2024 +0100

- fix minor compile warning
---------------------
Commit: 49ca8c148070a958bf60b9ca983c9de607131bd0
Author: Ian Curtis
Date:   Mon Jul 29 00:19:26 2024 +0100

- Fix mipmaps Real3d mipmaps only go down to 2x2 pixels. The 1x1 pixels
generated previously were actually the last part of the 2x2 mipmaps.
---------------------
Commit: 32414ee1fd06345755b9fe9572bc508c8be3c11c
Author: dukeeeey
Date:   Fri Jul 26 18:00:09 2024 +0100

- Merge pull request #168 from gm-matthew/specular
- Specular lighting works differently on flat-shaded polys Also lower
multIndex values for smooth-shaded specular, more accurate to real hardware
---------------------
Commit: 5fa402f2f586ebd7a107e68f7b9d9613e56d2b70
Author: dukeeeey
Date:   Fri Jul 19 16:32:45 2024 +0100
- Merge pull request #165 from gm-matthew/widescreen
- Don't expand culling planes unless widescreen is enabled
---------------------
Commit: a2645c944f57e8d9c245063d21f9bf612eab0a6b
Author: gm-matthew
Date:   Sun Jul 14 02:30:51 2024 +0100

- Give PowerPC more cycles to acknowledge sound IRQs 400 cycles was not enough
and would cause VF3 to hang. 1000 cycles should be more than plenty
- remove dead code
---------------------
Commit: 79868e0ad3cc4aa49772ac33c688e699b3272eac
Author: Ian Curtis
Date:   Mon Jul 8 12:19:06 2024 +0100

- fix compilation
- Merge pull request #160 from gm-matthew/textureNP
---------------------
Commit: 40bb7acbf7f7a20cf4960bbee1f2c342d29009d7
Author: dukeeeey
Date:   Sat Jul 6 18:47:05 2024 +0100

- Merge pull request #160 from gm-matthew/textureNP
- Texture mipmaps must be at least 2x2 Fixes sky in Dirt Devils
---------------------
Commit: ee5d6523c85f5fe8eb61768f10edfdc3b5f9858f
Author: dukeeeey
Date:   Fri Jul 5 17:21:14 2024 +0100

- Merge pull request #159 from gm-matthew/textureNP
- Implementing texture NP values For some reason Model 3 uses vertex
coordinates rather than texel coordinates to calculate mipmap levels Revised
microtexture implementation; results are very close to real hardware when
running at native resolution with supersampling disabled
---------------------
Commit: 19612e1b13844227003ad25a83e98854926b2cac
Author: Ian Curtis
Date:   Thu Jun 13 13:43:42 2024 +0100

- fix merge error
- merge conflicts
- Performance improvements The old texture code was being bottle necked by the
texture reads. We mirrored the real3d texture memory directly, including the
mipmaps in a single large texture. I *think* most h/w has some sort of
texture cache for a 2x2 or 4x4 block of pixels for a texture. What we were
doing was reading the base texture, then reading the mipmap data from a
totally separate part of the same texture which I can only assume flushed
this cache. What I did was to create mipmap chains for the texture sheet,
then copy the mipmap data there. Doing this basically doubles performance.
---------------------
Commit: 42e236be0dabf6cbda248e131d84459d8c268e6d
Author: gm-matthew
Date:   Sun Jun 9 22:04:53 2024 +0100

- Add comment briefly explaining optimization
- Minor shader optimization If the mipmap level is 0.0, we only need to run
texBiLinear() for the highest quality texture mipmap Adds around 10-20% more
performance in Daytona 2
- spelling
---------------------
Commit: 21e148599aed97bda062e0b5cf6b4373bc2c6c9d
Author: Ian Curtis
Date:   Sat Jun 1 10:38:40 2024 +0100

- Fix some missing scroll fog background effects in ECA
---------------------
Commit: 7d32bde074ae8198d2521a176cd084314138f9f8
Author: gm-matthew
Date:   Wed May 22 22:31:02 2024 +0100

- When disabling sound IRQs via MIDI control port, clear current IRQ Prevents
- Dirt Devils hanging during boot
---------------------
Commit: 976f0208dca51b19572fb86a403e7e8eacf2ff4f
Author: dukeeeey
Date:   Mon May 20 19:31:25 2024 +0100

- Merge pull request #151 from gm-matthew/sound-irq
- Sound IRQs are acknowledged by writing to MIDI data port
---------------------
Commit: 7b02f58694ea2612bc54eb0dcdffb1c2fa637c4d
Author: dukeeeey
Date:   Sat May 4 20:22:42 2024 +0100

- Merge pull request #149 from gm-matthew/scuddxo
- Only access SCSI device at 0xC0xxxxxx if it has been configured to do so
- Fixes some step 1.5 games not working in last update
---------------------
Commit: 2245fca796f749e966b01e53bea5d089271e7335
Author: dukeeeey
Date:   Thu May 2 23:29:47 2024 +0100

- Merge pull request #147 from gm-matthew/scuddxo
- Adding newly dumped version of Scud Race
- Use integer value for game stepping
- Adding newly dumped version of Scud Race Allow Step 1.5 games to access 53C810 via 0xC00000xx 
if the netboard is disabled, because scuddxo requires this
---------------------
Commit: 250f84e78eba381adf8cd731ce20b1b9be43c8c8
Author: Bart Trzynadlowski
Date:   Fri Apr 5 14:28:07 2024 -0700

- Updated .gitignore to exclude build directories and Supermodel release directories
---------------------
Commit: dec85032ba4f0b37996da26157b6aa0edfc9196c
Author: dukeeeey
Date:   Thu Mar 14 10:30:48 2024 +0000

- Merge pull request #138 from h0tw1r3/fix/2d-shaders
---------------------
Commit: d9f48db5db2e9d460e841f1f98426fe6868010c5
Author: Bart Trzynadlowski
Date:   Sat Mar 9 20:56:50 2024 -0800

- CLogger: destructor needs to be virtual
---------------------
Commit: 1bb7de1dd91110b6b399c13dadb9109fc8f073fe
Author: baraclese
Date:   Tue Mar 5 18:57:11 2024 +0100

-fix segfault in CMultiLogger
- vsprintf may change its va_list argument so repeatedly calling it with the
same va_list arg is undefined behavior. Fix this by creating a copy of the
va_list argument before each vsprintf call.
---------------------
Commit: e59ecea32d8ca20caf55662e698665f5b9142808
Author: Bart Trzynadlowski
Date:   Sun Jan 28 21:08:12 2024 -0800

- PowerPC frequency determined by board stepping, config option is now just an override
- No need to have changelog from 2011 in Readme.txt anymore.
---------------------
Commit: 620a5812272f57fdf1833ecaeaffb921561fd88f
Author: Jacob Oxford
Date:   Sat Dec 30 21:16:52 2023 +0000

- No need to have changelog from 2011 in Readme.txt anymore.
---------------------
Commit: 75260f9f2c298d9da0ffbfd00540ec7bce1e21d3
Author: Ian Curtis
Date:   Fri Dec 29 13:28:10 2023 +0000

- Clamp LODscale. If the object is drawn at zero we produce an Inf value which
will produce Nans with later calculations.
---------------------
Commit: 0e07f29f80dc4d9fd2da502163c1ac383c16ad7a
Author: Ian Curtis
Date:   Wed Dec 27 12:42:32 2023 +0000

- Amend ambient fog logic Should stop the sky flashing in lemans24, and the
background totally disappearing in sega rally after a game. The logic here
is still not totally understood but works well enough for the games.
---------------------
Commit: c039d08c038fdea8d365920c842e97c09c3a45e7
Author: Ian Curtis
Date:   Tue Dec 26 18:25:03 2023 +0000

- Add supersampling anti-aliasing Late christmas present. Due to the way alpha
works on the model3 adding regular anti-aliasing doesn't really work.
Supersampling is very much a brute force solution, render the scene at a
higher resolution and mipmap it.

- It's enabled via command line with the -ss option, for example -ss=4 for 4x
supersampling or by adding Supersampling = 4 in the config file.

- Note non power of two values work as well, so 3 gives a very good balance
between speed and quality. 8 will make your GPU bleed, since it is
essentially rendering 64 pixels for every visible pixel on the screen.
---------------------
Commit: 33b84c89aa5a6514512f69e763e6ff4cbdc4b4a0
Author: dukeeeey
Date:   Fri Dec 22 17:06:35 2023 +0000

- Added new uniform bool polyAlpha to shaders Added original matrix functions
back into Mat4 class though they are currently unused
- Floating point reversed z-buffer and new clipping code Also always draw
nodes with culling disabled even if they test as being outside the visible
frustum
---------------------
Commit: a19ba3cba80a352f4103551b90633c9d05f60d22
Author: dukeeeey
Date:   Sun Dec 3 18:22:30 2023 +0000

- Fixed Scud Race Plus "ROLLING START" patch Accidentally patched the wrong
memory location in Scud Race Plus
- Merge pull request #118 from firewave/uninit
- Model3.cpp: avoid usage of uninitialized memory
- Inputs/MultiInputSource.cpp: fixed mismatching allocation and deallocation
- fixed some `-Wunused-*` compiler warnings
- Merge pull request #113 from gm-matthew/handbrake
- Dirt Devils does not use the handbrake
- fix minor error
- Optimise shader code (gm_matthew)
- fix compilation on linux
- Fix transparency depth testing The two transparency layers, might not be
separate layers at all. We believe the hardware is writing each layer to
every other pixel (stipple alpha), then using an anti-aliasing filter to
effectively blend the pixels. Because the pixels don't overlap they don't
depth test against each other. We are using separate layers to emulate this,
so the depth buffer must be saved and restored between the layers.
- Add missing edge on transluency function
- Implement LOD blending If two translucent polygons with opposing patterns
overlap the result is always opaque Also the LOD scale calculation depends
on Euclidean distance of x, y and z, not just z
---------------------
Commit: d7263560068809f1960f3610ded04de1144a270f
Author: Ian Curtis
Date:   Mon Nov 13 23:19:18 2023 +0000

- Remove debug code
- Fix some stencil issues The stencil mask must be set to all 1s otherwise we
can't clear all the bits in the stencil buffer. Also we no longer need to
save/restore the depth buffer into between priority layers.
---------------------
Commit: 3022e418c7c74f9f56f06953f283f9ed2da5663a
Author: Bart Trzynadlowski
Date:   Sat Nov 11 13:57:30 2023 -0800

- Added some TODO notes to Main.cpp
- Fixed graphics analysis -gfx-state option
- DSB.h: when generating a debug build in gcc w/ -g, k_framePeriod was causing
a linker error. Not sure why k_timerPeriod wasn't but made them both
constexpr.
- byte_layout attribute for region tag, intended to support Sega Racing
Classic 2 ROM extracted from Yakuza
---------------------
Commit: c40d6ac17b2936726e79c874473b7c8029d8425c
Author: Ian Curtis
Date:   Fri Nov 10 19:13:37 2023 +0000

- Rewrite the stencil buffer usage slightly, so both the LOS and layered polys
work. LOS uses the top bit of the stencil buffer. Fixes some minor issues
with draw order in sega rally.
---------------------
Commit: f9a0901e8cd8e644cbf360e0192e1fd24df6cbb9
Author: Ian Curtis
Date:   Thu Nov 9 18:41:57 2023 +0000

- Fix regression Scroll attenuation seems to disable ambient fog. If scroll
attenuation is enabled it's telling the h/w to draw the real3d spot light on
fog for the scroll fog layer. This should fix a regression where the
background disappears on sega rally.
---------------------
Commit: a065df24b8525eee40e882e194b6294ff589ea1d
Author: Ian Curtis
Date:   Sun Nov 5 23:44:27 2023 +0000

- Correct scroll fog attenuation logic (gm_matthew) The attenuation value
effects the spot light on fog for the scroll fog layer. The old implemention
was nearly correct but the paramaters for the mix function were swapped.

Various fixes
- Scroll fog needed a break statement otherwise it could draw potentially
multiples times.
- The fog atttenuation paramater doesn't appear to effect scroll fog, other
than to potentially enable it. This fixes some issues with emergency call
ambulance.
- Added support for the node discard attributes which sega rally2 uses to
throw away specific geometry. This fixes junk that starts to show up in the
levels after multiple runs.
---------------------
Commit: 8dda8e9105a2cd08aafcbb7d9149c05db3a3f59e
Author: Ian Curtis
Date:   Fri Nov 3 13:24:59 2023 +0000

- Fix the line of sight function. Polygons have a line of sight value that'seither a 0 or 1. We write this value into the stencil buffer, then read the app can read it back to determine the polygon attribute is visible or not.
The returned value is 1/depth value in world coordinates. The first bit of
the float is actually a control bit, 1 indicates no geometry hit, 0
indicates geometry hit.
---------------------
Commit: 3a85bd9e257af2641191b387d56a027844e36a49
Author: Ian Curtis
Date:   Wed Nov 1 16:03:11 2023 +0000

- remove debug code
- Update comments for the culling node function. gm_matthew worked out that
the last 2 bits of the model scale float appear to be control bits for
disable culling and valid model scale. Strange logic but the line of sight
(LOS) function does something similar by re-using float bits for control
words.
---------------------
Commit: 37065ce4787cb45c74dcffdb630136b45e1904d8
Author: Ian Curtis
Date:   Tue Oct 31 23:50:33 2023 +0000

- the line scroll values, the top 16bits are the even lines, the
bottom 16bits are the odd lines. We had it swapped. This fixes the number
below the word results in daytona, when you finish a game. (gm_mathew)
---------------------
Commit: acab27452693ee9f7c55dfa297602ce42f8f6ec5
Author: Ian Curtis
Date:   Mon Oct 30 14:04:48 2023 +0000

- Set language standard to c++ 17
---------------------
Commit: f89da17f1778947fa2b3c4e543f3da3429578440
Author: Ian Curtis
Date:   Fri Oct 27 10:45:16 2023 +0100

- Fix white gfx on linux / intel gpus. These optimisations originally came
from toxieainc
- Amend the ambient fog logic to be disabled if fog density/start is set to
zero. This fixes a regression where the sky stops drawing in lost world.
- Rewrite the scroll fog shader slightly. Scroll fog is a 2d layer, it has no
depth, or can be considered to be drawn at infinity, therefore is not
effected by the viewport light. The scroll attenatuion value also I think
attenatutes the scroll fog alpha value. This fixes various effects in
emergency call ambulance.
---------------------
Commit: a214c6dae8e2ac016a63a2a656feec438cd72eeb
Author: Ian Curtis
Date:   Sun Oct 22 21:07:35 2023 +0100

- Prior scroll fog logic was nearly correct. For scroll fogging to draw it
needs either a start value or a fog density value, but these can come from a
different viewport if they have the same colour fog set. This fixes the
credits in vf3 which sets scroll fog, but it never draws on the original
hardware.
- For a long time we've had bug reports that in vf3 the background in the
Dural levels was the wrong colour, it should have been much darker. We
thought it was again missing scroll fog, but gm_mathew worked out it was
actually coming from the fogAmbient paramater. Not only does it darken the
fog, but it also has an effect on the 2d background from the tilegen,
similar to scroll fog. This also fixes the sky in lemans24.
---------------------
Commit: 2af078727948454a767995b340b6ecdba683d521
Author: Ian Curtis
Date:   Tue Oct 17 17:33:26 2023 +0100

- Remove debug code
- Rewrite the logic for the scoll fog (render buffer clear colour). Each
viewport can potentially have a scroll fog value so the logic of which value
to pick wasn't immediately clear. TLDR I think it picks the highest value
starting from the lowest priority layers. This fixes the sky in daytona
battle on the edge.
---------------------
Commit: 392900fee20fbd4277ff592abca1736b3b657048
Author: gm-matthew
Date:   Sun Oct 15 00:54:59 2023 +0100
- Scroll fog is like a clear colour for the render target, but can be semi
transparent as the tilegen layer can be shown underneath. I assumed that
transprent polys would be drawn to the render target for transparent polys
but unfortunately the logic does not work. So where else could it be drawn?
Well with limited memory it must be draw to the buffer for opaque polys,
which means this render target is also blended.

- Implement correct "round to nearest" mode On PowerPC round to nearest ties
to even, not away from zero Also implement correct behavior for ppc_fresx 
Fixes "tips to win" sequence in Daytona 2 BOTE

- Rewrite the renderer a bit to spit out the finished graphics from the 3d
chip on separate buffers. One buffer is for opaque pixels, and 2 more for
translucent pixels. Before the frame was composited on the back buffer,
which meant the tilegen had to have been drawn first. This way the images
are now totally independant of the tilegen chip so can be drawn as soon as
the register write 0xC is written to the tilegen.

- Some games update the tilegen after the ping_ping bit has flipped at 66% of
the frame, so we need to split the tilegen drawing up into two stages to get
some effects to work. So having the tilegen draw independantly of the 3d
chip can make this happen.
---------------------
Commit: 0e494a0219b5cfe9fff05201f576036d019ed106
Author: Bart Trzynadlowski
Date:   Tue Oct 3 18:02:19 2023 -0700

- Updated build script to use SFTP (Supermodel3.com server upgrade no longer supports ftp)
---------------------
Commit: d6566430872c89bdbdc30a03aec5a864ed8d6139
Author: Ian Curtis
Date:   Wed Sep 27 16:33:53 2023 +0100

- gm_mathew worked out that the camera flashes in sega rally 2 have the
'reset-matrix' attribute set inside the culling nodes, which was unsupported
until now because we never found any games to have used this bit. The reset
matrix is a bit strange, I would assume it would just reset the matrix back
to identity, instead it seems to just reset the rotation back to identity
whilst preserving the scale/position.
---------------------
Commit: e6b54686804cc349972d43e5960edae4c46b61ae
Author: Bart Trzynadlowski
Date:   Mon Sep 25 14:46:28 2023 +0200

- Update README.md: copyright dates.
- Model3.cpp: Comment describing scan line timing.
- Ping-pong flip timing depends of the value of tilegen register 0x08 Also
make the debugger display 16 bytes per line when using the "listmemory"
command. Mirrored system registers can now be watched
---------------------
Commit: a00e8de98897ced8fedf700bdca714d578694ff5
Author: Ian Curtis
Date:   Sat Sep 23 17:28:18 2023 +0100

- Update rules file. Not tested this but hopefully it should work
- Emulate the entire tilegen chip in a GLSL shader. (This is now possible with
opengl 3+). The tilegen drawing was emulated on the CPU, but was one of the
most expensive functions in the emulator according to a profiler. On a
modern GPU it's pretty much free, because a GPU is a massive SIMD monster.
- Tilegen shaders are mapped to uniforms, and the vram and palette are mapped
to two textures.
- TODO rip out the redundant code in the tilegen class. We don't need to
pre-calculate palettes anymore. etc
- The tilegen code supports has a start/end line so we can emulate as many
lines as we want in a chunk, which will come in later as some games update
the tilegen immediately after the ping_pong bit has flipped ~ 66% of the
frame.
- The scud rolling start tilegen bug is probably actually a bug in the
original h/w implementation, that ends up looking correct on original h/w
but not for us. Need hardware testing to confirm what it's actually doing.
---------------------
Commit: 38a95088e8278e8a2b6c50d7f8a7e187819de449
Author: gm-matthew
Date:   Mon Aug 28 03:12:43 2023 +0100

- Prevent "ROLLING START" scrolling glitch in Scud Race There is a quirk of
  the tilegen chip that causes this glitch not to occur on real hardware, but
  we can't be sure what it is without testing Much easier to just patch all
  the Scud Race ROM sets
- Fix Z80Debug.cpp compile with C++20 String literals should not be used to
  initialize char* but C++17 and earlier were letting it slide
- SCSP: added more detail to comment explaining 68K clock speed as recommended by Brian Troha
---------------------
Commit: b2fee4242cd061a55e8f3bb2f6dfafbf9f87403f
Author: gm-matthew
Date:   Sat Aug 19 23:47:00 2023 +0100

- DMA device register always returns Step 1.x PCI ID Step 2.x games by AM3
request PCI ID this way and expect to see 0x16c311db
---------------------
Commit: 015e8e921254210b66f1e83ed22f6a4c08759a19
Author: gm-matthew
Date:   Mon Jun 26 10:56:04 2023 +0100
- Drive board uses the value 0xFF (not 0x00) on ports 42 and 45 to stop all 
effects when port 46 is set to 0xFF; fixes FFB effects continuing after game ends
---------------------
Commit: 84aa972ef20a8edda0ebc46d1f12d0d7577dc04b
Author: Matthew Daniels
Date:   Tue May 16 02:49:35 2023 +0100
- Add description of swtrilgy patch from MAME
- Star Wars Trilogy will sometimes write to a JTAG register and then read it
back to verify it, but this doesn't work correctly with Supermodel's current
JTAG implementation; it will try again and never succeed, getting stuck in
an infinite loop. This patch stops the code from branching up and trying the
write/read cycle again, allowing the subroutine to continue normally.
We need to implement shift register widths correctly for each JTAG device
(Mercury, Venus, Earth, etc.) for the unpatched code to work properly...
right now Supermodel implements one JTAG device with a huge 197-bit data
---------------------
Commit: ac0e6407b414d05e55efa4cafe1644c899d62d66
Author: Bart Trzynadlowski
Date:   Sun May 7 21:51:22 2023 -0700
- Games.xml: Removed seemingly unnecessary swtrilgy and swtrilgya patches, which should re-enable JTAG configuration and fix Endor Death Star tunnel shading
- Fix GCC 13 build.
- MSYS and probably a few Linux distros are now shipping GCC 13. The new standards and issues are listed here,
https://gcc.gnu.org/gcc-13/porting_to.html
- Work around to prevent I/O error after a while on fishing games with tension
- Crosshair optimization:
    -create crosshairs only once in Init() instead of created them at every
    cycle
    -use matrix scale to apply the aspect ratio
---------------------
Commit: 6993dfcfb0ebe369f246ff50e3669d4557a527da
Author: Bart Trzynadlowski
Date:   Tue Mar 28 15:38:43 2023 -0700
- Makefile.Win32: fixed detection of Windows Command Prompt for rmdir command
---------------------
Commit: 87de86f7d19aba5cb16c675a3b0ee8142da72bd7
Author: Bart Trzynadlowski
Date:   Fri Mar 17 23:00:44 2023 -0700

- Crosshair: use actual adjusted viewport resolution (configuration resolution
is not the same thing). 
- Fixes crosshair alignment for resolutions with
non-Model 3 aspect.
---------------------
Commit: 95fc08e0a3f031dd3f6f325666c7d1668c2c3d05
Author: Bart Trzynadlowski
Date:   Wed Mar 15 18:24:01 2023 -0700
- Windows app manifest added to enable PerMonitorV2 DPI awareness
- Update README.txt
- Fix old typos, leaving alone the American English. Remove the "Virtua
Striker 2 '99" unlock code. I don't think it works,  others have also tried, 
https://www.supermodel3.com/Forum/viewtopic.php?f=3&t=2096&p=19784#p19784
---------------------
Commit: 3848d276da6126117472a6895a6145b0c2469d48
Author: CapitaineSheridan
Date:   Tue Mar 14 08:43:24 2023 +0100
- README.txt: Updated Section 5 (video settings), squeezed everything back
into 80 columns, changed 'Virtua Fighter 2 '98' to 'Virtua Striker 2 '98' in
Section 10
- NetBoard: guard against freeing null pointers and INetBoard needed a virtual
destructor (was causing crashes on exit on some systems)
- Autobuild script update following crosshair update
- m_crosshair is not needed and the config should be checked every frame
because otherwise Alt-I command was broken (the number of crosshairs to
render is mapped to a UI key) [Bart]
- Better optimisations. Moved all UI rendering from Main to CCrosshair. Take
care of syntax about crosshair style.
- Change Media folder to Assets folder. Naming variable convention. Command
line change -crosshair-style = vector|bmp. Config ini variable change
- CrosshairStyle = vector|bmp. CCrosshair::DrawCrosshair optimisation. 
- Modifying UpdateCrosshairs() to eliminate global variable.
- Crosshair refactor
    -add a new separate class for crosshair
    -crosshair coordinates are calculated by matrix instead of recreating every
    object at correct coordinates
    -add ability to scale crosshair by dpi
    -add ability to use bitmap crosshair (located in ./Media/). 32bits bmp
    format + alpha
    -cmd line "-bitmapcrosshair" or "-vectorcrosshair" and/or
    BitmapCrosshair=0|1 in config file
    -these changes are only for lost world game with Crosshairs=1|2|3
- README.txt: Fixed a typo, end-of-sentence formatting in section 10, and
- added ECA cheat codes as per Brian Troha's suggestion

---------------------
Commit: 188bb5c2854f20d2c8b54adfa8e76c0749995629
Author: Bart Trzynadlowski
Date:   Fri Mar 10 15:00:24 2023 -0800
- README.txt: fixed typo
- README.txt: Added region codes to section 10 (c/o Brian Troha)
---------------------
Commit: ae5af4c0363890c252c163b8fb48d23fa023fd56
Author: Bart Trzynadlowski
Date:   Sat Mar 4 11:59:49 2023 -0800
- Fixed window position config storage and command line parsing
---------------------
Commit: f7dcc1c445286cd2a1446588bb3a8115047fba40
Author: Bart Trzynadlowski
Date:   Mon Mar 6 21:47:03 2023 -0800
- Games.xml and README.txt updated by Brian Troha (new Ocean Hunter ROM sets and several updates to version descriptions, etc.)

---------------------

Commit: ffc320904e8806143bb9b9044a6cbe95f0efa11a
Author: The Brink of Tomorrow
Date:   Sat Feb 25 10:39:00 2023 -0500
- Update README.md with macOS build details
- Update README.md with macOS build and run instructions

---------------------

Commit: 78f505622317606eebff2ae4e49deab6ce07cf1d
Author: Aaron Paden
Date:   Wed Dec 28 21:56:34 2022 -0600
- Add missing filename to ErrorLog call.
- Memory allocated but not released.

---------------------

Commit: 69a458ecf79b7b91de821de0435d7ac0cd8a7ae1
Author: Ian Curtis
Date:   Sun Dec 25 00:32:01 2022 +0000

- Make sure to invalidate texture memory when going fullscreen otherwise it might not be syned correctly.
- SDL_SetWindowFullscreen isn't needed as we call ResizeGLScreen which sets the fullscreen mode afterwards.
- We must explicitly call SDL_SetWindowFullscreen after setting the display mode otherwise the refresh rate doesn't change.
---------------------
Commit: ad0aed42a48436f47aa21bd2704871afb115a21e
Author: Ian Curtis
Date:   Mon Dec 19 14:11:21 2022 +0000

- be a bit more flexible with the display frequencies we'll match
- The model 3 (actually model 1,2 and 3) all used some crazy refresh rate of
57.524hz. If your screen refresh rate is 60hz, supermodel will work fine,
but really run too fast. Anyway if you create a custom refresh rate,
supermodel will automatically pick this, and set it when the emulator is in
fullscreen mode. Apparently this works with most monitors, even cheapo low
end ones.
- To active set your command line to:
    -res=1920,1080 -vsync -fullscreen -true-hz
Replace the resolution with whatever your monitor's native resolution is.

---------------------

Commit: 984f78ad1bed616b59b0c15ece2486f78c9dc149
Author: Ian Curtis
Date:   Sat Dec 17 23:46:11 2022 +0000

- Merge branch 'master' of https://github.com/trzy/Supermodel
- Better opengl resource allocation. 
- Fixes going fullscreen and back.

---------------------
Commit: 50d947deeec0545c23f5c3be6ada99baddbe0aad
Author: gm-matthew
Date:   Wed Dec 14 00:39:13 2022 +0000

- Add FileSystemPath.cpp to Visual Studio project
- Fixed build on macOS
- Switched to Util::Format() to generate screenshot filename
- First review code changes (identation and cosmetic changes)
- Changed pathType from string var to enum
- Keep Supermodel files (config, nvram, saves, etc.) in a predictable path when running on Linux
---------------------
Commit: db455ba5c1c5a47a9f0a7de46680377f13f663e5
Author: toxieainc
Date:   Tue Nov 8 08:11:14 2022 +0100

- add undefd codepath for correct use of the 18bit DAC path (which seems to be
 triggered for all games)
- the volume correction to bring the data back into a valid range is not really needed in practice though, 
only Daytona2 seems to need it, and also only extremely rarely, so lets just live with a tiny bit of 
clamping for
 that game then while add it, make some formatting similar to MAME, and add one comment
 
regarding a most likely wrong recent MAME change
---------------------
Commit: 153c5100090f982b9dad76b71ed8d52207f41b8e
Author: Ian Curtis
Date:   Sat Nov 26 12:58:07 2022 +0000

- Fix uniform location.
- Update Model3.cpp
- Wait until IRQ2 is acknowledged before starting IRQ40 sequence. 
- Fixes SkiChamp hanging at FBI screen when region set to USA
---------------------
Commit: 79a2414f3f25b7e2ced92587e621bdad21b8912f
Author: gm-matthew

Date:   Sun Nov 20 01:27:50 2022 +0000

- Incomplete texture headers uploaded via FIFO are now discarded. 
Ski Champ
sends one more 32-bit word via DMA than it should which was causing
Supermodel 
to erroneously intepret the extra word as another texture
---------------------
Commit: acc7161ca5545a592d5b4145b2b5bacfc7b08f73
Author: ToBul
Date:   Sun Nov 13 03:16:45 2022 +0000

- [Makefile.Win32] $MSYSTEM check never fails.
- 'make clean' from Win command shell doesn't fully clean, condition always true.
---------------------
Commit: 5f30614c4c02e3957fc1d27c02ab13664984946a
Author: Ian Curtis
Date:   Wed Nov 9 18:56:15 2022 +0000

- FIx shaders failing to build on apple h/w
---------------------
Commit: fe36b07702187057dcf2b899b84bc8f54fb3cfdf
Author: Ian Curtis
Date:   Tue Nov 8 10:35:05 2022 +0000

- Update makefile
- Remove some left over depreciated opengl functions. They were basically no-op anyway with shader path.
---------------------
Commit: 4c727abdc84e5c9eb56b3a178c2dd473d7581725
Author: toxieainc
Date:   Thu Nov 3 11:49:35 2022 +0100
   - change all INT16 mixing/intermediate clamping to floats
   - also fixes 3 bugs: 1) mpeg right channel volume was always using the left
    channel volume, too 2) too high MusicVolume setting was not clamped to
    0..200 3) too high SoundVolume setting was not clamped to 0..200
---------------------
Commit: 121f81c7429b18d5085ce2d3b2a7b9e045c39c72
Author: Bart Trzynadlowski
Date:   Wed Nov 2 15:38:52 2022 -0700

- 68K now uses run-time hooks for IRQ and instruction hook callback
---------------------
Commit: 33c04ce3458515508f661e92745f6ee031c44dd0
Author: Bart Trzynadlowski
Date:   Sat Oct 29 11:44:34 2022 -0700

- Games.xml: Added re-dumped magtruck and retained old ROM set with patch (mgtrkbad) for users who fail to obtain newest MAME ROMs
---------------------
Commit: b2e5a200daf9588616715f2279c5d3bd37832e09
Author: Ian Curtis
Date:   Mon Oct 17 09:34:11 2022 +0100

- Fix build for linux (just missing header)
- Upgrade the glsl shader class a bit. Add a const char* comparitor so we can
- use a map with a simple "string" key. Fine to use when performance is not critical.
- Add a proper git ignore file .. And fix the legacy renderer to build with
- new visual studio (2019)
---------------------
Commit: e644751f016d38cf7ed3a1dfedf2cf018661787d
Author: toxieainc
Date:   Fri Oct 7 09:01:45 2022 +0200

- after clarifications, minor cleanup
- remove 2 dupe function calls, where ProcessLos should actually be rather costly
- Fix new 3D engine texture2DLod function missing error on Linux/MESA. MESA
requires needed extensions to be explicitly declared in code otherwise it
will not enable them.
---------------------
Commit: aae58edd62711f2a84470e40c7cc2e1bec8aa406
Author: toxieainc
Date:   Mon Oct 3 04:47:39 2022 +0200

- change one more place with potential aliasing issue
- address review
- address review and move bit casts to new header
---------------------
Commit: dda6d4cf955fdcfa1434a1b0dc9a8560a9e71939
Author: Bart Trzynadlowski
Date:   Tue Aug 20 18:33:33 2022 -0700

- Added some options to default Supermodel.ini that otherwise are not documented anywhere because README.txt is out of date
- Optimize quad rendering by replacing the double 
- fix missing version GLSL compiler warnings on startup
---------------------
Commit: e06788e76891ed29bc60fd6d7c3ef086bd25fbf3
Author: ToBul
Date:   Sun Aug 14 11:10:13 2022 +0100

- Fix SUPERMODEL_DEBUGGER build. - Ian
- As requested by Bart; Ian's last SourceForge commit. Also, purely to appease
my OCD, a change I forgot on my last 'Games.xml' PR that really shouldn't
bother me as much as it does.
---------------------
Commit: d4633a868d7362e4775c4f42e22e6aecd34e6e84
Author: toxieainc
Date:   Mon Aug 8 09:18:59 2022 +0200
- equivalent optimizations, NFC
---------------------
Commit: d60feab2ca7739b59de602e55729bf7ef958ab58
Author: trzy
Date:   Mon Jul 18 13:00:27 2022 -0700

- Fix some errors, fix some performance warnings, and some simple (but effective) optimizations
- check for __GNUC__ instead of just assuming it
- Games.xml: Align ROM names with MAME.
- Minor and inconsequential change. Makes manual ROM building 'slightly'
- easier when using latest MAME ROM set (currently 0.245).
- slightly optimize DrawTileLine (less branches/logic)
- optimize ReadRegister, as localtime (at least on MSVC/Windows) is significantly showing up in profiling (e.g. in SW Trilogy)
- caches localtime until time changes (i.e. limits calls to 1/sec)
- use intrinsics for endian swap
- fix a real error (m68kdasm) and some harmless performance warnings and use modern headers
- fix some real errors (Model3,InputSystem), minor errors (SCSP,SDL/Main) an some performance warnings
---------------------
r888
- Fix build with SUPERMODEL_DEBUGGER enabled. Probably last commit as source has moved to git.
---------------------
r887
- njz3: Fix sound volume with new quadrophonic audio code
---------------------
r886
- values must be signed, to handle negative numbers, my bad
---------------------
r885
- minor fix
---------------------
r884
- Added configurable refresh rate. Default is 60 but -true-hz on the command line enables 57.524 Hz mode, which some players report making Spikeout and the timing of combos in VF3 more authentic. The config key is RefreshRate and is specified as a floating point value. Should the desire arise, arbitrary refresh rates can be set in Supermodel.ini using this key but almost no validation of the value is performed. Thanks to forum user trap15 for the original code and PonMi for advocating for this patch to be included.
---------------------
r883
- njz3: Proper quadrophonic audio support. Need 4+ speakers to take advantage otherwise down mixed to stereo.
---------------------
r882
- Added default values for PortIn, PortOut, and AddressOut
---------------------
r881
- fix: explicit specialization requires 'template <>'
---------------------
r880
- Bitmap size field in the BITMAPV4HEADER was not being set correctly (the image viewers I've been using are unaffected by this but it ought to be corrected)
---------------------
r879
- When dumping textures, two T1RGB5 texture maps are written: with and without contour processing. Contour processing can be disabled per-polygon and some textures intended to be used without contour processing contain pixels with T=1 that are clearly not supposed to be transparent. We now output textures_t1rgb5_contour.bmp and textures_t1rgb5_opaque.bmp.
---------------------
r878
- Added a -dump-textures option (config key DumpTextures) that writes texture BMP files, one for each known format (12 in all currently)
---------------------
r877
- Adjust the number of PowerPC cycles executed per frame to assume 57.524 Hz refresh rate
- Fighting Vipers 2 attract mode no longer requires 100+ MHz to run smoothly
- Supermodel itself still runs at 60 Hz
---------------------
r876
- Double buffer the line of sight values. Should allow the correct values to be returned if GPU threading is enabled.
---------------------
r875
- Fixing Magical Truck Adventure bad ROM dump which was causing attract mode to stop rendering
---------------------
r874
- methods should be marked as noexcept because they cannot throw
---------------------
r873
- white space.
---------------------
r872
- Better document real3d registers
---------------------
r871
- Clear all Real3D DMA registers on reset; uninitialized values were causing issues with MSVC debug builds
---------------------
r870
- Another header include fix
---------------------
r869
- Include required header files in Model3GraphicsState.h 
- fixes potential build errors in GCC
---------------------
r868
- Increase MIDI FIFO buffer size for SCSP; should prevent FIFO overflows
- Also use similar macro for DSB FIFO buffer
---------------------
r867
- PowerPC IRQ line deassertion
- DMA only fires interrupts when required
- PowerPC no longer clears its own IRQ line
- it is now cleared by the IRQ controller when there are no more pending interrupts. Not all games clear DMA interrupts so it was necessary to tweak the 53C810 SCSI controller and the Real3D DMA interface to only fire interrupts if a certain register is correctly set. 53C810 has the documented DIEN (DMA Interrupt Enable) register
- vReal3D DMA seems to use the low bit of the dmaConfig register.
- Also I removed the net IRQ as no games seem to actually use it.
---------------------
r866
- Getting rid of most of the includes from Supermodel.h 
- each file now explicitly includes the header files it needs.
---------------------
r865
- Shared RAM on simulated netboard is now double-buffered
- Spikeout Final Edition no longer requires a hack to work
---------------------
r864
- New JTAG patch for Sega Rally 2; linked mode now fully working.
- Few other minor changes
---------------------
r863
- Increase size of DSB2 FIFO buffer
- Fixes Sega Rally 2 music occasionally not switching or fading out
---------------------
r862
- Non-linked games no longer falsely list the net board under extra hardware
---------------------
r861
- Fix 16-bit variables not displaying correctly in Z80 debugger (at least in MSVC builds)
---------------------
r860
- Fix netboard resets and detection of simulated netboard linking to itself
---------------------
r859
- Adding simulated netboard
- All linked games except Sega Rally 2 working at full speed.
---------------------
r858
- Corrected alignment issues with netboard RAM; send/receive parameters no longer need to be manipulated to work correctly. Fixes bugs including Scud Race linked car orientation.
---------------------
r857
- Add some async network methods. 
- Async send copies to an internal buffer and sends in another thread so doesn't block at all. 
- Added CheckDataAvailable method to the TCPReceive class. Can check or wait for data without blocking.
---------------------
r856
- DSB2 clock speed from 4MHz to 11MHz.
---------------------
r855
New dumps added: 
- Virtua Striker 2 '99.1 (Step 1.5, Export, USA, Revision B) 
- Virtua Striker 2 '99.1 (Step 1.5, Japan, Revision B) 
Thanks to Brian Troha and The Dumping Union
---------------------
r854
- Fixed cycle counting overflow that was causing DSB2 to halt execution.
---------------------
r853
missing header
---------------------
r852
DSB2 IRQ 2 now fires at 1KHz rather than once per frame, improving
music timing in Daytona USA 2 and Sega Rally 2. DSB1 CPU timing
increased from 1MHz to 4MHz, improving music fade timing in Scud Race.
Thanks to gm_matthew for these discoveries.
---------------------
r851 
- Just a few compile warnings
---------------------
r850
- Fix project file
---------------------
r849
- Build bot script.
---------------------
r848
- Skichamp Driveboard error fix.
---------------------
r847

Huge refactor of the Driveboard:

-Separate each possible boards (wheel, joystick, skipad, billboard).
-Defined a Driveboard type in Games.xml for each games.

-Due to the refactoring, Driveboard Savestates have changed (a common base data + a specific board data are saved).

-Backwards compatibility with previous save states is maintained.
-Driveboard rom section is no longer required anymore. 
This disables Driveboard emulation in case the rom is not found.
-Added Billboard emulation (vf3, vs2, fvipers2, von2). 
7 segments and lamps Outputs are redirected to Supermodel outputs.
-Changes project to C++ 17 standard.
---------------------
r846
- Introduce new config keywords.
- In xinput mode, lets the choice to have left and right gamepad motors vibrate together.
- XInputStereoVibration = 1 (both motors) [default]
- XInputStereoVibration = 0 (separate motors)
- In sdl input mode, new control option to set minimum strength above which a Model 3 constant force command will be simulated on an sdl gamepad device.
SDLConstForceThreshold = 30 [default]
note : the vibration strength can be mod with SDLConstForceMax = [val]
---------------------
r845

The controls of bass/getbass games were no longer good, following recent rom set name changes in Games.xml.
---------------------
r844

Corrected game set names & game titles (Brian Troha)

New clones
-Sega Bass Fishing Deluxe (USA) (Brian Troha)
-Dirt Devils (USA, Revision A) (Brian Troha)
---------------------
r843
Added rumble skipad in Ski Champ game.
This is only a simulation (cmd are interpreted), not an emulation because we lack informations on the game itself and its driveboard (does it have dedicated cpu/rom ?).
---------------------
r842
Service menu activated in swtrilgyp.
Note : The "feedback stick test" always failed (change cab type DX to SD if needed).

---------------------
r841
- Add -O3 optimization option for OSX and Linux.
- Revert netboard to disable by default.
---------------------
r840

Suppressed net board console output (using debug logging now)
- Added GPL headers to net board source files

---------------------

r839

- Star Wars Trilogy untextured Death Star surface bug in gcc builds was caused by -Ofast (thanks to rokfpoewrkcpoqwkcp for discovering this). Using -O3 now.
- Net board enabled by default.
---------------------
r838
Updated rules file.
---------------------
r837
Introducing a special release build target with SVN version stamping.
---------------------
r836
Magical Truck Adventure rom patch to unlock region. (enter service menu, then Start P1, Start P1, Service, Start P1, Service, Test)
---------------------
r835
-wide-bg option to stretch the background tile layer when wide-screen mode is enabled - Daro Land
---------------------
r834
Change the duration of constant force effect in SDL2 to correct daytona games
---------------------
r833
Makefiles update
---------------------
r832
Star Wars Trilogy lever feedback activated
---------------------
r831
Force Feeback for Linux
---------------------

r830
hopefully fix building on linux 
---------------------
r829
Added Screenshot feature (ALT+S).
---------------------

r828
Remove using namespace from headers.
---------------------
r827

fix compiling with visual studio

---------------------
r826

fix missing polys with quad renderer
---------------------
r825
Balance initial value set to "0" rather than "false". "False" is interpreted as 0 when decoded as a float, so there will be no effect here, but this expresses the intended logic better.
---------------------
r824
Fixed a longstanding bug that caused stereo channels to be flipped incorrectly.
This was due to the initial audio buffer write position being aligned to the middle of a 4 byte (2 byte left, 2 byte right) audio sample.
In multi-threaded mode, some sort of race condition caused this alignment to be fixed until audio playback was temporarily paused (via pausing, loading a state, etc.)
Audio playback should now be fixed and work consistently in all cases.
---------------------
r823
- Clip scroll fog to viewport, instead of filling entire screen. Fixes fog bug in Daytona credits.
---------------------
r822
- Update scroll fog logic. Should fix the credits in virtua fighter and daytona that have fogging applied to the background layer and shouldn't.
---------------------
r821
- Add missing library from previous windows makefile update.
- NEW_FRAME_TIMING build option was removed because it was no longer used.
---------------------
r820
Windows makefile update
---------------------
r819
- Reworked logging system to support output to multiple outputs: files, stdout, stderr, and syslog (OutputDebugString on Windows, syslog on other systems).
- Added ordinal logging level: all, debug, info, error. Compiling with DEBUG defined is no longer necessary for debug logging. Be careful when logging debug level because it produces copious output.
- Fixed -enter-debugger options when compiled with SUPERMODEL_DEBUGGER.
- Command line parse errors no longer ignored; Supermodel will now exit.
---------------------
r818
Rename command line SCSP option to -legacy-scsp and -new-scsp
---------------------
r817
Correct the returned value from previous getbass patch
There was a strange side effect on Ocean Hunter game
---------------------
r816
Getbass related
---------------------
r815
Small oversight in the new SCSP code
---------------------
r814
Various SCSP improvements and code cleanup:
- Ported MAME's implementation
- Corrected FM sound for songs in VF3 that use it
- Music tempo now closer to real hardware thanks to emulating two SCSP chips.
- Add LegacySoundDSP config option for games with SCSP DSP glitches (ex. engine noises in Sega Rally 2, and loud garbage on Bahn's stage in Fighting Vipers 2)
- Renamed SysFPS to "SoundClock" (since raising this appears to adjust the sound frequency).
---------------------
r813
New ecap crc rom + rom patch
---------------------
r812
Low level z80 core bug
Discovered when looking at lemans ffb board (real Model3 rom, not Model2 stcc one)
This could affect other ffb board and/or scud race DSB1 sound board
However I didn't notice any bad things
---------------------
r811
Remove some debug code
---------------------
r810
Update glew version
---------------------
r809
build fixes for mac
---------------------
r808
skichamp rom patch : prevent driveboard error at boot
---------------------
r807
Linux build compatibility changes
---------------------
r806
Update makefiles
---------------------
r805
silence a few casting warnings
---------------------
r804
Netboard related : Define a new hardware line in games.xml
---------------------
r803
_rotl() replacement
---------------------
r802
Only try and make a connection if we have enabled EmulateNet
---------------------
r801
Fix corrupted memory in network mode
---------------------
r800
remove old files
---------------------
r799
Replace network code with new tcp implementation
---------------------
r798
Add SDLnetworking + some basic tcp classes
---------------------
r797
cache variable, without it is unusably slow in debug mode
---------------------
r796
add missing file
---------------------
r795
update vs project files
---------------------
r794
fix output values
---------------------

r793
The translator map seems to work with paletted colour values too, and the result is not clamped. Colours are passed to the GPU as unsigned bytes to multiplying by 16 will overflow, so we do the logic in the shader. If we passed floats we could skip the shader logic.

---------------------

r792
When the translator map is enabled the colour values seem to use 4 bits, 0-16. Why not 0-31 I don't know. Anyway virtua on is overflowing these values for some of the smoke effects. For us the numbers were wrapping around. Clamping is enough to fix this. (Thanks model123)

---------------------
r791
Custom resolution bug fix
---------------------
r790
SDL1 to SDL2 internal changes 
---------------------
r789
remove files
---------------------
r788
---------------------
r787
Tweak value so the map indicator still works at the start of spikeout
---------------------
r786
Sutherland-Hodgeman clipping only works for planar primitives. Scud is rendering non planar quads and this breaks our algorithm a little when using the quad renderer. Stretching the near plane a few % is enough to fix it.
---------------------
r785
Only need to clip against 4 planes for poly culling
---------------------
r784
Fix the sky in harley in first person mode where pixels in the sky are culled when they shouldn't be with 
the quad renderer. Basically we were running out of precision in a rare corner case. Doing the maths with 
double precision and casting back to float was enough to fix the issue.
---------------------
r783
To calculate the mipmap value the opengl needs to calculate the difference in the texture coordinates between adjacent pixels. If there are no adjacent pixels the hw may need to spawn 
invisible fragments outside of the visible polygon. 
Our algorithm was culling these out so the mipamp calculation failed for edge pixels. 
Anyway this fixes quad rendering looking broken with the latest nvidia drivers.
---------------------

r782
Really should cull against 5 frustum planes.
---------------------
r781
Stretch the time the ping_pong bit flips a bit to bump writes into correct frame. Otherwise they end up getting written at like 99.8% of the frame and overlapping with... 
---------------------
r780
Optimise Games.xml (Krom)
---------------------
r779
Thanks to our anonymous contributor who managed to patch a model 3 game and run it on real h/w, 
we were able to obtain some timing values we had been long been missing for correct emulation. 
The h/w polls something called the ping_pong bit at start-up to sync the GPU with the CPU. 
Unfortunately we didn't have the correct values and just manually used some per game hacks to get games to run. 
This mostly worked, but some games were writing more or less frames than they should have been for a given time period. 
When the ping_pong bit flips at 66% of the frame time, games were writing data for a new frame, which meant writes were often straddling 2 separate frames. 
We aren't 100% sure if IRQ2 or the ping_pong bit is vblank. 
---------------------
r778
Ocean hunter in the middle of the game is passing a few matrices with FLT_MAX inside them, which blows apart our near/far calculation. 
The hardware must have some method to sanitize the near/far for instance if you render something extremely close to the origin you will also blow apart any near/far calc.
---------------------
r777
skip invalid culling nodes
---------------------
r776
A culling node must follow immediately after a viewport.
---------------------
r775
Fix possible negative pointer arithmetic which was causing the music to wrap around.
---------------------
r774
Update makefiles 
---------------------
r773
Previous mpeg audio code worked for me in debug mode, but the release build had some serious corruption issues when being built in visual studio. Replaced the old spaghetti code with a more modern implementation.
---------------------
r772
- Disabled Alt-O (dump timings) and Alt-U (dump input state) when   SUPERMODEL_DEBUGGER not defined - Option '-print-inputs' works again if no ROM set specified 
---------------------
r771
Restore Sega Rally music in some practice stages 
---------------------
r770
Fixed MPEG music looping glitch.
---------------------
r769
Refactor code from previous svn768 (Note : break old savestate compatibility)
---------------------
r768
Fix the audio in sega rally2. The game has packed separate tracks into the left and right audio channels. Selecting the correct track fixes the garbled mess. (Spindizzi)
---------------------
r767
Fix shader. Why this worked on my nvidia card .. I'm not sure.
---------------------
r766
Composite the alpha layers at the end of rendering. To do this we need to mask the alpha pixels with the opaque pixels from the next priority layer. Fixes some overlapping shadows in vf3tb that have different priority layers. I assume that ...
---------------------
r765
-Added support for specifying multiple sections simultaneously in INI   files, e.g., [ daytona2, dayto2pe ] -Forgetfulness in 763
---------------------
r764
Technically backface culling should cull polys when the dot product = 0, since when it equals 0 the polys is perpendicular to the camera and thus invisible. When you complete sega rally2 (if you can get that far lol) the champagne is invisi...
---------------------
r763
Inputs can now be configured on a per-game basis
---------------------
r762
- PCI bridge can be specified in Games.xml for games that use a different version than expected based on stepping. No more hard-coded exceptions. 
- Real3D PCI ID can be specified in Games.xml for exceptions that require it. 
- Real3D status ...
---------------------
r761
timing fix for srally2x (Spindizzi)
---------------------
r760
Updates games.xml for new prototype games (Spindizzi)
---------------------
r759
remove commands that do nothing
---------------------
r758
clear scissored out areas
---------------------
r757
Optimise depth calculation for quad shader.
---------------------
r756
Update Games.xml for games that were recently dumped
---------------------
r755

---------------------
r754
Fade out microtextures with higher textures LODs. Fixes incorrectly applied microtextures in LA machineguns.
---------------------
r753
debug code should be disabled
---------------------
r752
Smooth texture repeat makes no sense for alpha/contour textures with pixel dilate. HW seems to treat them as non smooth anyway. Also implement some line of sight stuff, used by Scud. Really need to check the threading/synchronisation of the...
---------------------
r751
return correct PCI ID
---------------------
r750
fix debugging code
---------------------
r749
fix copy paste error :]
---------------------
r748
Correctly emulate the real3d pro-1000 texture modes in our shader.
---------------------
r747
Revert some patches (Spindizzi)
---------------------
r746
Update makefile 
---------------------
r745
Both lemans24 and dirt devils are rendering some totally transparent objects as the first model in each viewport. The HW seems to skip these entirely, and including them breaks our near/far plane calculations leading to Z fighting. 
---------------------
r744
Tweak the ratio for the near plane. Fixes missing text on the map indicator at the start of spikeout. The vertices are 0.003 units apart so a tonne of precision is required at the near plane to not depth test out.
---------------------
r743
remove debug code
---------------------
r742
avoid double matrix load
---------------------
r741
updated command line help
---------------------
r740
Quad rendering engine. Set QuadRendering = 1 in the ini file to use, or -quad-rendering at the end of the command line to use.
---------------------
r739
Sega bass fishing is starting some off the meshes with a shared vertex. Without having a previous vertex to share with, the values were just uninitialised and junk. The hardware itself seems to hold the value from the previous mesh, and seg...
---------------------
r738
remove dead variable
---------------------
r737
Use correct PCI IDs (Harry Tuttle)
---------------------
r736
add crosshair effect (Harry Tuttle)
---------------------
r735
fix cast, and remove extra ; that had snuck into the shaders
---------------------
r734
Opaque polys definitely depth test with less than or equal. Virtua striker is drawing co-planar polys for the bar gfx
---------------------
r733
Draw transparent polys to separate layers and composite at the end. This solves a tonne of transparency errors we had been battling with for a long time. The model3 is strange in the fact it only supports a max of two translucent overlapped...
---------------------
r732
forgot parentheses
---------------------
r731

---------------------
r730
optimise hash function and parse out transparency layer select bit
---------------------
r729
select correct bit ..
---------------------
r728
Parse out TranslucencyPatternSelect
---------------------
r727
Fixed Makefiles for non-MSYS builds. Unfortunately had to revert a lot of the automated configuration that Harry had inserted. Users will again need to hand-edit Makefile.Win32 for their configuration. Verbose warnings (-Wall) have been res...
---------------------
r726
Parse siblings after children. It's the only way to get Daytona water fall to look correct without h/w poly sorting.
---------------------
r725
Added a stretch mode (-stretch) and modified new renderer's viewport code (hopefully correctly) to handle aspect ratio correction and widening the way the legacy one does.
---------------------
r724
Render the opaque part of texture transparency in the first pass. Fixes numerous transparency related issues in lemans24 and some in ocean hunter. I don't really know if this is the 'correct' way of solving this because the real3d pro-1000 ...
---------------------
r723
remove unnecessary copies 
---------------------
r722
Fix controller inputs (Spindizzi)
---------------------
r721
Inconsequential typo
---------------------
r720
Reverted version to 0.3a-WIP. Release version will be updated to 0.4a.
---------------------
r719
Added ability to load save state at startup using -load-state or InitStateFile (in config file)
---------------------
r718
work around for non working jtag code in star wars
---------------------
r717
Clamping must be applied before the spotlight is applied on step 1.0 h/w. 
---------------------
r716
Fix step 1.0 games with NET_BOARD defined (Spindizzi)
---------------------
r715
Update network code (Spindizzi)
---------------------
r714
white space
---------------------
r713
Support both types of lightgun in lost world. 2nd type fixes some missing fx. Thanks to Any for pointing this out. To use the old type change analog_gun1 to gun1 in the xml file.
---------------------
r712
fix a few compile warnings
---------------------
r711
Add the netboard stuff to the ini file. Stops crashes when they are missing.
---------------------
r710
A hack to get spikeout to work (uncomment to enable) (Spindizzi)
---------------------
r709
Disable the netboard if EmulateNet=0 (Spindizzi)
---------------------
r708
remove extra qualifier 
---------------------
r707
Update make files and fix build for the various options (Harry Tuttle)
---------------------
r706
fix header files
---------------------
r705
Remove using namespace std from the header files ..
---------------------
r704
Parse out line of sight position. Only known to be used by scud.
---------------------
r703
make the logic a bit clearer
---------------------
r702
fix Ian's bad maths :)
---------------------
r701
Update microtexture coordinate logic (Harry Tuttle)
---------------------
r700
fix illegal xml character sequence
---------------------
r699
simplify maths
---------------------
r698
comment out unneeded code
---------------------
r697
top/bottom were swapped for off axis projection
---------------------
r696
Rewrite projection maths based upon previously unknown viewport values. The previous values used roughly worked as the normals for frustum planes. Perhaps they were only used for culling and not actually rendering, as sometimes the values d...
---------------------
r695
fix build
---------------------
r694
add the rest of the network board code (Spindizzi)
---------------------
r693
use the correct c++ deleters 
---------------------
r692
use a few macros to make debugging less painful
---------------------
r691
Add network board emulation. Currently not linked with the rest of the project.
---------------------
r690
remove using namespace from headers ..
---------------------
r689
rename to avoid clash with a #define
---------------------
r688
add asynchronous sending functions 
---------------------
r687
remove dead variable 
---------------------
r686
Add basic networking files to supermodel. Currently these are win32 specific but can port to SDL or whatever later.
---------------------
r685
Fix the smallest texture lods  (Harry Tuttle)
---------------------
r684
fix array out of bounds 
---------------------
r683
remove debug code
---------------------
r682
mark as static
---------------------
r681
Implement sub 8x8 tile encoding. Fixes incomplete mipmap chains which previously only went down to 8x8 pixels before. It wasn't known these textures existed before. (Harry Tuttle)
---------------------
r680
Fix some bad/missing textures in fighting vipers. The game is referencing totally illegal texture sizes. The real h/w was just handling it somehow, whilst we were returning null for the textures. This might produce junk textures for the low...
---------------------
r679
Shift fog maths to fragment shader to fix bug in virtua on.
---------------------
r678
The vertex shader is run before clipping is done. If fogging values are calculated and clamped in the vertex shader it can interpolate bad values, since the range has been truncated. This happens if the polys overlap the near plane. The sol...
---------------------
r677
Fixed shading also works with untextured polys. Fixes some shading issues in La machineguns. (Harry Tuttle)
---------------------
r676
Update step 1.5 luminous logic with Harry's findings. Fixes various shading issues.
---------------------
r675
Finish the hash function (Harry Tuttle)
---------------------
r674
Remove fixed shading check from specular.
---------------------
r673
Makefile fixes: Moved Windows-specific source files out of Makefile.inc, using 'bin' and 'obj' when bits are not explicitly set, and changed output file to Supermodel rather than Supermodel.exe, which works on all platforms.
---------------------
r672
Star wars is the only game to pass unsigned fixed shaded values (per vertex brightness) to the renderer. Originally we thought that the specular flag would turn on unsigned values since it's the only game to set specular with these polys, b...
---------------------
r671
update visual studio project
---------------------
r670
update spotlight code (Harry Tuttle)
---------------------
r669
Harry's patch: add dirtdvlsj and change "Star Wars Trilogy" to "Star Wars Trilogy Arcade"
---------------------
r668
New, saner Makefiles. They still require some customization but share a core Makefile include with auto-generation of dependencies. Multi-threaded building (e.g., make -j6) is supported now.
---------------------
r667
add missing header
---------------------
r666
Get rid of unused variable warning
---------------------
r665
Fix the sky in one of the levels in virtua on. The problem was caused by the fact we didn't split the mesh by the fog % burn through, so all the polys had the same value. We could use a vertex attrib, but % burn through fog is so rarely use...
---------------------
r664
Fix tiny memory leak
---------------------
r663

---------------------
r662
update project files
---------------------
r661
work around for visual studio bug 
---------------------
r660
fix missing header
---------------------
r659
cannot specify explicit initializer for arrays - fix for visual studio
---------------------
r658
- New work-in-progress frame timing code (disabled by default, compile with NEW_FRAME_TIMING defined to activate it) - New JTAG emulation, moved into its own class, CJTAG - Removed game-specific sun clamp hacks from CNew3D (JTAG and Real3D ...
---------------------
r657
Added functions to safely read and write bools
---------------------
r656
Added functions to extract bits as integer values and updated comment about bit vector layout
---------------------
r655
Added SetOnes() and SetZeros()
---------------------
r654
Safe guard against shifting empty register.
---------------------
r653
Hex formatting support extended to 64 bits.
---------------------
r652
Added ShiftOutLeft() and ShiftOutRight()
---------------------
r651
Renamed shift in/out functions to add/remove to be less ambiguous about their functionality
---------------------
r650
Added ToHexString() and made ostream serialization use this
---------------------
r649
Fix for VS2015 and newer by MetalliC
---------------------
r648
Added BitRegister class (for use in upcoming JTAG refactor): an inefficient but flexible container for manipulating a dynamic bit stream.
---------------------
r647
Calculating the length of the vertex results in quite broken values for fogging when the vertices are traversing the view frustum. The hardware also wouldn't have been doing a square root per vertex for fogging. Simply using the z values is...
---------------------
r646
add interface for sun clamp
---------------------
r645
Optimise vertex data to cut down on unnecessary copying 
---------------------
r644
Modern hardware does backface culling in window space by calculating the face normal for the polygon, then doing a dot product against the view vector. The real3d pro-1000 on the other hand passes a pre-calculated face normal for each polyg...
---------------------
r643
DMA and register space access for Real3D have been unified and CReal3D::ReadRegister() returns little endian data now that the PowerPC handler byte-swaps back, to be consistent with how DMA registers work.
---------------------
r642
Changed fixed shaded logic for step 1.5 hw based upon Harry's findings
---------------------
r641
cosmetic
---------------------
r640
Harry made some important discoveries with regards to fixed shading on the model 3 (per vertex poly brightness values). Firstly values are allowed to be negative, and they are used as a drop in replacement in the standard lighting equation ...
---------------------
r639
Patched Sega Rally 2 DX to boot up. Enjoy Sega Rall 2 without MPEG music at 50% speed ;)
---------------------
r638
Fixed up memory region dumping code to use the new Util::FlipEndian functions
---------------------
r637
Fixed a bug in MCRFS instruction related to the VXSOFT, VXSQRT, and VXCVI bits. Thanks to Spindizzi.
---------------------
r636
Finish fixed shading for 2.0 hardware. I'm pretty sure it actually works identically to step 1.5 hardware. The oddball is LA machine guns where the viewport ambient doesn't seem to effect the brightness. But the ambient works differently in...
---------------------
r635
With fixed shading, when lighting is disabled, fixed shading appears to be a flat shaded version based upon the poly colour, instead of per vertex attributes.
---------------------
r634
Pad struct and align on 4 byte boundary.
---------------------
r633
simplify
---------------------
r632
fixed shading doesn't effect the alpha channel
---------------------
r631
Fixed shading (per vertex poly colours) on step 1.5 hardware have the viewport ambient value added to them. This fixes various shading on scud. To do this had to switch the maths to the vertex shader.
---------------------
r630
Fix attribute locations. glBindAttribLocation must be called linking
---------------------
r629
Added support for loading shaders from files for new engine and tile renderer. Changed help text to reflect new engine being default.
---------------------
r628
make the new3d engine default :] Legacy engine can still be selected using -legacy3d in the command line
---------------------
r627
use generic vertex attributes
---------------------
r626
Technically matrix casts are only allowed in glsl 1.2 and later
---------------------
r625
Remove debug code
---------------------
r624
Sometime ago I managed to work out that specular on the model3 is not real specular, and really is just an extension of diffuse lighting. But attempts were derailed by corner cases and the fact we were not handling the normals correctly. An...
---------------------
r623
cosmetic
---------------------
r622
Add the unclamped light model we know exists to the shaders.
---------------------
r621
Ski champ for some reason is passing denormalised numbers for the modelscale. This is causing a NaN in our shader killing the lighting for these models, so we simply skip these, since they are essentially zero anyway. Thanks to Harry for fi...
---------------------
r620
We were force normalising the result of matrix * normal, which looked correct in most cases. But this didn't preserve the scaling of the matrix, or the scaling of the model normals which resulted in many over bright areas. On it's own this ...
---------------------
r619
Implement unclamped light model based upon Harry's findings. Unknown how this is turned on/off.
---------------------
r618
Use c++11 raw string literals
---------------------
r617
Clamp the ambient light to a max of 0.75. LA Machine guns seems to use an ambient value of 1, which is full bright for everything. But for some reason the hardware seems to treat this as ~ 0.75. This fixes various missing shading in the gam...
---------------------
r616
remove WIP code
---------------------
r615
convert sun angle coordinate system outside of the shader
---------------------
r614
A second go at fixing the fixed lighting in star wars .. Fixed shading is per vertex poly colours. For some reason in star wars they are treated as unsigned values instead of signed, like in every other game. These polys are all marked with...
---------------------
r613
fix double offset
---------------------
r612
Revert previous fixed shading changes. Implement new logic for fixed shading on step 1.5 hardware based upon Harry's findings.
---------------------
r611
remove debug code
---------------------
r610
Fix the fix shading in star wars. Fixed shading still needs some work for mag truck and dirt devils to match the arcade.
---------------------
r609
cosmetic
---------------------
r608
Tweak scroll fog logic again .. should fix missing 2d fogging in Spikeout.
---------------------
r607
rewrite scroll fog logic
---------------------
r606
Remove debug code
---------------------
r605
minor culling node optimisations
---------------------
r604
don't need cast, conversion is implicit
---------------------
r603
better state handling
---------------------
r602
parse out some culling node values
---------------------
r601
There are 2 bits in the polyheader labelled discard. When both are set ie in sega rally, the polygons are totally discarded. Scud seems to set bit 1 which seems halve the opacity.
---------------------
r600
The real3d has a flag that allows the hw to skip polygons so that they aren't rendered. Sega rally2 uses this for the dust effects. Triangles or quads that have this flag are junk, and look like random corruption if you try to draw them. We...
---------------------
r599
Linux Makefile fixed by Sergio Benjamin
---------------------
r598
light parameters must be clamped (HarryTuttle)
---------------------
r597
Virtua fighter has a few massive polys that shouldn't be visible. It looks like these polys have a bad matrix, but the node distances are all zero. This means the bounding box that encapsulates them is of size zero. Skipping over these enti...
---------------------
r596
Updated Util::Config::Node unit tests with multiple leaf node test
---------------------
r595
remove unused variable
---------------------
r594
Extended -gfx-state to produce culling node analysis
---------------------
r593
Fixed behavior of Util::Config::Node when adding nested nodes (only leaf level can be duplicated; e.g., foo/bar and foo/bar will create one foo with two bar children, rather than two foo each with one bar).
---------------------
r592
Spindizzi's SCSP DSP fix for the VF3TB cave stage
---------------------
r591
Hooked up the command line help options (thanks, Spindizzi!) and updated copyright info
---------------------
r590
Removed unnecessary patches from lemans24
---------------------
r589
add missing include
---------------------
r588
Removed patches from source code and moved them into game XML file. Created ROMSet.cpp. Print a more descriptive error when game XML file fails to load.
---------------------
r587
Updated help text to include -game-xml-file option
---------------------
r586
Moved ROM patches into Games.xml and added patches to swtrilgy to make test emu work and to eca/ecau to pass the network check
---------------------
r585
add missing include
---------------------
r584
Harry Tuttle's fixes to fishing controls: invert fishing rod y and fishing stick y axis values so setting a negative axis is not necessary. Also changed reel to an analog input (similar to a pedal), whose neutral position is 0.
---------------------
r583
Harry Tuttle's change to Harley gear shift to use a single bit instead of two (no detectable difference in behavior, though)
---------------------
r582
Removed unused file: Game.cpp 
---------------------
r581
Fixed lamachin title -- thanks Jiterdomer!
---------------------
r580
cosmetic 
---------------------
r579
Daytona seems to use this completely undocumented feature of the real3d pro-1000, the ability to invert texture colours. This patch fixes the colours on the cars, and the signs which should flash by alternating their colours.
---------------------
r578
Removed last vestiges of CINIFile from input system and removed Games.cpp, INIFile.cpp, and ROMLoad.cpp
---------------------
r577
Using Game::INPUT_* instead of obsolete GAME_INPUT_*
---------------------
r576
Changes by Harry Tuttle: game list more accurately reflects MAME's, added a root level XML "games" node, print ROM version along with title
---------------------
r575
Fixed graphics state analyzer 
---------------------
r574
Added cstring
---------------------
r573
Added remaining games largely thanks to the efforts of the mysterious '??'
---------------------
r572
more whitespace ..
---------------------
r571
white space ..
---------------------
r570
Cache dereferenced values. Cuts loading time from 15 to 5 seconds in debug mode :)
---------------------
r569
Included cstring for memcpy
---------------------
r568
Rewrote large parts of ROM loading code to more gracefully handle merged sets where overwritten parent ROMs are not present. Better handling of multiple zip files. Optimized ROM loading when stride and chunk size are equal and got rid of sa...
---------------------
r567
Rewrite the spot light code, and implement the missing fog logic. (HarryTuttle)
---------------------
r566
Fixed missing file detection (set_difference requires inputs sorted by desired key) and improved error reporting
---------------------
r565
Made scuda a child set of scud
---------------------
r564
Removed TODO comment
---------------------
r563
Smarter game selection when a zip file contains multiple games (prefer child when parent is also present in zip)
---------------------
r562
Warn about parent ROM sets having parent defined (not allowed)
---------------------
r561
Print missing files from games
---------------------
r560
Support loading of parent ROM sets (e.g., scudp will load scud)
---------------------
r559
compile fixes
---------------------
r558
MSYS2 compile fix (HarryTuttle)
---------------------
r557
Replace glsl 3 function. Apparently this doesn't work on OS X.
---------------------
r556
fix compile warnings
---------------------
r555
Sort games found in zip file by descending order of matching files so that game with the *most* matching files is picked
---------------------
r554
Added: bass, daytona2, dirtdvls, harley, lemans24, scuda, skichamp, spikeofe, spikeout, von2, vs2, vs298, vs2v991 Fixed: dayto2pe title
---------------------
r553
Fixed scud mpeg roms 
---------------------
r552
don't ask
---------------------
r551
fix project files
---------------------
r550
fix multiple default constructors 
---------------------
r549
add missing include
---------------------
r548
Massive internal change: removed CConfig object and replaced it with a hierarchical config object system (Util::Config::Node). Games are now defined in an XML file. Hopefully I didn't break too many things :/
---------------------
r547
Cosmetic: renamed step to stepping
---------------------
r546
No need to enclose values in quotes when writing INI file. Print that file was saved to console and log.
---------------------
r545
Added a TODO list
---------------------
r544
Added srally2
---------------------
r543
Encapsulated zip file handling and added a "parent" member to the Game struct
---------------------
r542
Checking in GameLoader.cpp, GameLoader.h, and ROMSet.h (not currently used in build) because I need to make a substantial modification in my local tree
---------------------
r541
Fixed dayto2pe sample ROMs
---------------------
r540
The mipmap data in some games seems to being sent behind the base textures, and when the base textures are bound and created the mipmap chain is not yet valid in memory. To fix this, we invalidate the base textures, when the mipmap chain is...
---------------------
r539
Just use 1 hash map for the textures, instead of 1 for each format. Should greatly speed up texture invalidation. TODO invalidate texture mipmaps .. the h/w actually seems to stream the mipmap data separate from the base textures in some ca...
---------------------
r538
cosmetic 
---------------------
r537
calculate the correct number of mipmap textures
---------------------
r536
Originally to do mipmapping, I just used the base texture and then let the h/w automatically generate the mipmap chain. I wasn't sure the real3d api even exposed to the programmer the ability to directly set the mipmap data. Anyway, as poin...
---------------------
r535
Added fvipers2
---------------------
r534
use 32bit types
---------------------
r533
Added more games to Games.xml: dayto2pe, eca, lamachin, lostwsga, magtruck, oceanhun, vf3. Fixed swtrilgy (MPEG music).
---------------------
r532
Added 8- and 16-bit tilegen VRAM access handlers to fix missing columns in Star Wars Trilogy tilemaps. Thanks to Spindizzi for initial confirmation that this was the problem.
---------------------
r531
fix scissor code for native resolution (thanks HarryTuttle)
---------------------
r530
remove debug code
---------------------
r529
The model3 has this weird issue where the 2d and 3d planes are misaligned by 2 pixels. Originally I made a quick hack that shifted subviewports 2 pixels. But apparently that wasn't enough, as the issue effects everything. Thanks to HarryTut...
---------------------
r528
Texture coordinates seem to be scaled relative to the fixed texture size of 256. Thanks to HarryTurtle for figuring this crazy logic out. The road in scud matches the arcade now almost perfectly.
---------------------
r527
Change microtexture scaling values. Seem to much better match expected output. (thanks HarryTuttle)
---------------------
r526
More fixes to microtexture coordinates. They go vertically up and down the texture sheet, and not horizontally as I had guessed. (Thanks HarryTurtle)
---------------------
r525
Fix microtexture texture coordinates (thanks HarryTuttle)      
---------------------
r524
fix the bad projection matrix in dirt devils and lost world
---------------------
r523
The hardware actually seems to treat the quad primitive as a triangle strip. The winding order can actually change between the first and second 'triangle' inside the quad, leading our code to incorrectly backface cull the 2nd triangle. So w...
---------------------
r522
Support high priority polygons. They are treated as a separate overlay plane by the h/w. Fixes some missing fx in harley.
---------------------
r521
Add high priority poly function. Used by harley.
---------------------
r520
When the translator map?? bit is enabled the colour format seems to be 4-5bit. Max observed value is 16. Scaling these values up seems to produce the correct colours in harley and dirt devils.
---------------------
r519
Put a check in there, in case near values come out really close to zero. Fixes a slight corner case in lemans24. A check probably should have been there originally :)
---------------------
r518
Dynamically calculate near/far frustum planes for each viewport priority layer by clipping the overlapping meshes with the 4 frustum planes. A bit brute forcy, but the results are great.
---------------------
r517
mark the nodes without valid distances set
---------------------
r516
cosmetics 
---------------------
r515
only need to cull against 4 clipping planes
---------------------
r514
For scroll fog set the viewport to the entire area, allows fog to work in widescreen mode
---------------------
r513
properly cache un-normalised texture coordinates, fixes a texturing regression in Daytona 
---------------------
r512
fix microtexture colours
---------------------
r511
Only check scroll fog value from the first viewport from each priority layer. Seems to fix problems with background fogging.
---------------------
r510
delete unused files
---------------------
r509
Support microtexture relative scale. The exact scaling values are not known, but a 2x difference between each level seems highly likely. We know from visual inspection from scud that the first level is exactly 4. The SDK has a function that...
---------------------
r508
The model3 shares vertices between polygons. But it also seems to do this for polygons with different textures. This means the texture coordinate for potentially different sizes textures is shared. Currently this was broken leading to some ...
---------------------
r507
refactor
---------------------
r506
tweak scroll fog logic
---------------------
r505
clean up
---------------------
r504
minor optimisations 
---------------------
r503
Only check the geometry for culling with valid node distances. We will need this later.
---------------------
r502
Revert changes .. if we clip against the real3d clipping planes, our wide screen hack won't work anymore.
---------------------
r501
Get clipping planes directly from the viewport data. Also no need to clip against a far plane
---------------------
r500
Need to walk back in memory and check the previous texture tiles to see if they overlap with the current textures being invalidated. If they overlap they must be cleared too. Algorithm is a bit brute forcy and more expensive than I'd like b...
---------------------
r499
Skip processing the mipmap section of memory. The real3d doesn't create mipmaps down to 1x1 that is needed to do mipmapping properly on modern hardware anyway.
---------------------
r498
Clear queued texture uploads after processing them. Saves re-uploading the same textures whilst paused
---------------------
r497
More accurate 2D colours. White should map to 255 not 248
---------------------
r496
Fix the shading in scud. When lighting is disabled the fixed shading intensities appear to be offset values added to the colour value.
---------------------
r495
change throttle logic for smoother playback, we could get closer to 60fps if SDL timers weren't so lame
---------------------
r494
change scroll fog logic to parse the lower priority viewports first
---------------------
r493
implement scroll fog, fixes a tonne of missing fx
---------------------
r492
Parse out scrollfog value used for blending over the 2d background. 
---------------------
r491
Fix scenes with missing fog in ocean hunter. The game was passing negative fog densities. The sign seems to be ignored by the model 3.
---------------------
r490
same fix for legacy engine
---------------------
r489
our scratch mem must match correct max texture size
---------------------
r488
Fix the sky in advanced stage in Dirt Devils. It uses a massive (for 1998 :p) 1024x256 texture.
---------------------
r487
Support multiple microTextures, fixes crazy texturing in sega ski champ. I'm assuming microtextures are always located on the other memory bank to the base texture. This logic seems to work for all our games anyway.
---------------------
r486
Added RGBA4 format to BMP file writer
---------------------
r485
Made parsing of hex values more robust
---------------------
r484
Initial check in of Games.xml (only two games defined so far)
---------------------
r483
Fixed new 3D engine's fragment shader to work on some older GPUs by reducing the number of discard statements to one
---------------------
r482
Updated game loader to make use of latest changes to config tree: generic value types and eliminated pointers
---------------------
r481
Support for hex numbers in string to integer conversions (with '0x' prefix) and special keywords in string to bool conversions (true/false/on/off/yes/no)
---------------------
r480
Added Util::Stricmp() and small tweak to serialization of Util::Format
---------------------
r479
Added support for multiple value types in config nodes. Removed Ptr_t and ConstPtr_t from public interface, moved config tree builders into their own file, and made them pass by reference and value. Exceptions can be thrown now on lookup fa...
---------------------
r478
Added copy constructor and assignment operator using C++11 move semantics
---------------------
r477
Defined inputs
---------------------
r476
Support for deep copies via assignment operator. This will pave the way for elimination of Ptr_t and ConstPtr_t.
---------------------
r475
Added Write() method to write buffer to an ostream, and added an ostream operator overload
---------------------
r474
Changes to game loader interface, added 32-bit word swapping utility function
---------------------
r473
Added Logger.o to OSX and UNIX Makefiles. Should fix compilation on these platforms.
---------------------
r472
Removing MSVC Makefile 
---------------------
r471
Initial check-in of game loader (not operational yet)
---------------------
r470
Byte swapping utility function
---------------------
r469
Added ValueAsBool(), ValueAsBoolWithDefault(), and ValueAsUnsignedWithDefault()
---------------------
r468
update visual studio project
---------------------
r467
Added Util::Config::Node::ValueAsUnsigned() with support for base 10 and 16 ('0x' prefix)
---------------------
r466
Added Util::ToLower()
---------------------
r465
Config::Node::Add() now supports nested keys (e.g., Add("foo/bar/baz", "0") will create three nested config nodes)
---------------------
r464
Changed Config::Node::Create() to Add() and added a Set() method (for INI semantics). Turned Test_Config.cpp into a proper unit test reporting pass/fail for each test.
---------------------
r463
Adding tinyxml2 lib
---------------------
r462
XML parsing support for new config system
---------------------
r461
Moved logging functions into OSD/Logger.cpp (eventually logging system will be reworked entirely) and added new config tree structure (not yet used). 
---------------------
r460
Updated Win32 gcc, UNIX, and OSX Makefiles
---------------------
r459
Updated Fragment_NoSpotlight.glsl (fragment shader for legacy engine without spot light)
---------------------
r458
disable spot light if the extent is zero
---------------------
r457
Saving progress on scudp disassembly
---------------------
r456
parse some unimplemented spot light values from viewport
---------------------
r455
Added disassembly of Scud Race Plus
---------------------
r454
Marked offset of code in CROM for scudp
---------------------
r453
stencil translucent non textured polys
---------------------
r452
refactor
---------------------
r451
Cull geometry based on the culling distances in the nodes. Should give some sort of speedup on lower end pcs where the CPU is predominantly the bottle neck.
---------------------
r450
Fix compilation when SUPERMODEL_DEBUGGER enabled
---------------------
r449
cache bound texture
---------------------
r448
cleaning
---------------------
r447
Added drive board and lamp raw outputs (submitted by SailorSat)
---------------------
r446
support negative exponent 
---------------------
r445
Add code to convert the 16bit float format used by the hardware back into float 754 format. 16bit floats are used for the culling radiuses in the nodes.
---------------------
r444
Added -vsync and -no-vsync option descriptions to command line help
---------------------
r443
remove dead code
---------------------
r442
Added a Split() function to Util::Format.
---------------------
r441
XInput fix: search for all three possible XInput DLLs (xinput1_4.dll, xinput1_3.dll, and xinput9_1_0.dll). I have not tested 32-bit builds.
---------------------
r440
Check for overflow. Fixes some fade effects
---------------------
r439
Legacy engine: fixed texture offsets (VON2 was broken by last commit). Texture coordinates are wrapped within the bank first and then the bank can be swapped. This also allows the full range of texture coordinate bits to be used as specifie...
---------------------
r438
Y texture offsets are just 5 bits. Texture coordinate wrap around happens in the same texture sheet, not into the next one. Fixes various texturing bugs in sega rally.
---------------------
r437
Legacy engine: Culling node texture Y offset is only 5 bits (fixes Sega Rally 2 initials decal)
---------------------
r436
New engine: modf -> std::modf (fixes compilation on gcc)
---------------------
r435
Legacy engine: expanded color index to 12 bits from 11. Does this affect any games?
---------------------
r434
New engine: expanded color indices to 12 bits from 11. Added PolygonHeader::ColorIndex and SensorColorIndex methods.
---------------------
r433
Forgot to describe one polygon header field in Model.cpp
---------------------
r432
Updated polygon header descriptions
---------------------
r431
Legacy engine: Added stencil buffering for layered models and shadows. Not as accurate as new engine because stencil buffering is applied per-model rather than per-polygon, so the entire model must consist of stencil-tested polygons. In pra...
---------------------
r430
Optimise non smooth texture repeat to only effect texture boundaries, rather than poly boundaries. Fixes a few ugly artefacts
---------------------
r429
fix transparency values, values are from 0-32, not 0-16 where the top bit disables
---------------------
r428
Stencil layered polys, fixes shadow z fighting in some of the games. Other games maybe using stipple alpha (yuck), not sure yet.
---------------------
r427
remove bad rom patches
---------------------
r426
don't clamp after spot light code, looks much closer to h/w
---------------------
r425
Hooked up Sega Bass Fishing / Get Bass controls
---------------------
r424
basic spotlight code
---------------------
r423
Fixed fog in legacy 3D engine. Now computed same as new engine, with 4-bit light modifier and corrected fog mixing in shaders.
---------------------
r422
Updated legacy engine vertex shader to use specular shininess and coefficient along with old equation. Still not correct (too strong compared to the old method).
---------------------
r421
fix alpha testing for texture format 7
---------------------
r420
remove dead code
---------------------
r419
support 4 bit textures
---------------------
r418
correctly mask pointers
---------------------
r417
optimise hash table access for better performance
---------------------
r416
support colour table pointer
---------------------
r415
remove debug code
---------------------
r414
Fog start is apparently the fog value at the viewport (0,0,0) I guess like an ambient value. Default value is negative
---------------------
r413
Non luminous polygons seem to be effected by the lightModifier also. API seems to have no restriction in this regard, neither does the SDK. The ocean hunter requires this for some of the 2d stuff. Light modifier values only seem to exist be...
---------------------
r412
adjust (hopefully correct) fog equation
---------------------
r411
preliminary specular
---------------------
r410
- Removed a stale comment
---------------------
r409
Legacy renderer changes: - Updated shading model. Unfortunately, it is far from perfect but it seems to be the best I can do for now. Not really much of a difference from before except that the Scud Race castle is fixed at the expense of th...
---------------------
r408
Added palette bit to list of bits to dump for analysis
---------------------
r407
Disable light modifier on fog, seems not to work .. values don't make sense. Maybe the model3 doesn't use these.
---------------------
r406
remove dead code
---------------------
r405
double up polys for two sided polys, fixes some diffuse lighting problems
---------------------
r404
FLT_MAX -> std::numeric_limits<float>::max()
---------------------
r403
Added some IRQ-related code (commented out for now) from MAME findings. May incorporate in the future when investigating IRQs and timing again.
---------------------
r402
update header documentation
---------------------
r401
Fix bad texture seems
---------------------
r400
Reverted stencil mask change. This reintroduces the Scud Race 'ROLLING START' bug. Previous 'fix' did not work for Magical Truck Adventure anyway and also broke some games (Daytona 2 transmission and course select screen, ECA title screen)....
---------------------
r399
Added a register read handler for tilegen (although nothing seems to benefit from it)
---------------------
r398
Fixed logic for clearing bottom layer. Added new functions to 2D renderer interface. Avoid drawing top and bottom surfaces when no layers are present there. Added some comments to tile
---------------------
r397
Rewrote 2D renderer and fixed 2D layer priorities, stencil mask clipping (Scud Race 'ROLLING START'), and cleaned up code. Unfortunately, the new code is about 50% slower, mostly due to the need to perform stencil clipping after scrolling.
---------------------
r396
add texture helper functions
---------------------
r395
remove pointless loop
---------------------
r394
Split face colour from per vertex poly colour. Fixes colour bleeding between connected polys in harley.
---------------------
r393
Changed XInput DLL failure message
---------------------
r392
update poly header class
---------------------
r391
Fixed compilation on gcc (gotos cannot cross variable declarations)
---------------------
r390
Flat shaded polys can't share vertex normals with adjacent connected polys. Fixes some bad lighting in Harley on pavements
---------------------
r389
support flat shading
---------------------
r388
Make sure texture is bound to correct texture unit, stop flashing micro textures in daytona
---------------------
r387
set correct microtexture wrap mode
---------------------
r386
preliminary microtexture
---------------------
r385
skip viewports marked as disabled, might stop parsing some bad data
---------------------
r384
fix compilation
---------------------
r383
Added support for A1RGB5 to BMP file writer and added a (commented-out) example of how to use it to dump texture memory in ~CReal3D()
---------------------
r382
wrap invalid texture sizes, seems to fix bad textures in srally2 (skid marks)
---------------------
r381
Turn off lighting if fixed shading (or no normals) flag is present. Fixes some of the lighting weirdness in scud
---------------------
r380
Legacy engine: fixed per-vertex fixed shading to incorporate Ian's findings that the intensity value is signed and that fixed shading applies only when lighting is enabled
---------------------
r379
Daytona seems to use 3 bits for texture transparency, will figure it out later but for now this works
---------------------
r378
Fix fixed shading maths
---------------------
r377
Updated to-do comments
---------------------
r376
fixed shading code
---------------------
r375
Legacy engine: preliminary per-vertex fixed shading. Only limited testing with LA Machineguns (appears to work), Sega Rally 2 (appears okay), and Scud Race (fixes expert course bridge but not other mis-colored polygons).
---------------------
r374
read front buffer
---------------------
r373
Luminous bit is now also dumped in polygon header analysis because shading modes may depend on whether or not lighting is enabled
---------------------
r372
Legacy engine: extracting fixed shading component (but still can't use it because unsure of how to activate)
---------------------
r371
Fixed polygon header bit analysis code: was forgetting to swap GL buffer back to retrieve pixels from last rendered frame
---------------------
r370
color flag
---------------------
r369
update project
---------------------
r368
make compilable with visual studio
---------------------
r367
simplify
---------------------
r366
Forgot a newline
---------------------
r365
Polygon header bit analysis code (need to #define DEBUG and use -gfx-state option)
---------------------
r364
Added utility function to write BMP files
---------------------
r363
Updated polygon header description with double-sided bit (forgot it in last update!)
---------------------
r362
Added an updated description of the polygon header to the top of Legacy3D/Models.cpp
---------------------
r361
fix model normals, add code for fixed shading, as of yet flag to turn it on is unknown
---------------------
r360
Legacy engine: vertex normals are standalone and do not need to be added to polygon normal
---------------------
r359
Added a debug option to load and render a single frame of graphics state from a save state file. Only available if compiled with DEBUG defined. Invoked using: -gfx-state=<file> on command line.
---------------------
r358
Using IEmulator interface instead of CModel3 directly
---------------------
r357
Changed save state file version (r340 changed Real3D save format, breaking compatibility with older states, and states were probably already incompatible with 0.2a)
---------------------
r356
Fixed white space and warnings. Fixed second argument to -dis option in cases where other numerical parameters are specified on command line.
---------------------
r355
Flattened out nested if-statements in new engine's fragment shader to improve compatibility with older GPUs (e.g., NVS 300)
---------------------
r354
parse viewports in normal order
---------------------
r353
walk siblings before children, fixes some of the transparency drawing issues in ocean hunter
---------------------
r352
simplify
---------------------
r351
avoid cast warning
---------------------
r350
simplify list code
---------------------
r349
Updated Mac OS X Makefile
---------------------
r348
Fixed 8-bit texture decoding in legacy 3D engine. Contour mode/alpha still needs to be made consistent (as much as possible) with new engine.
---------------------
r347
Updated Supermodel.ini with default Magical Truck Adventure controls
---------------------
r346
Hooked up Magical Truck Adventure controls
---------------------
r345
you were right Bart :) (Fixes broken sound in last build)
---------------------
r344
Don't use variable sized variables across platforms, unless needed
---------------------
r343
Fix - cannot specify explicit initializer for arrays
---------------------
r342
Figured out Step 1.0 VROM texture uploads. Fixes missing textures in VF3 and VF3TB.
---------------------
r341
Debugger compilation fixed: CBus -> IBus
---------------------
r340
Fixed Magical Truck Adventure by emulating VROM texture ports as a FIFO. Now, VF3 crashes on Akira's stage (and probably the other stages with texture glitches). Other games may be affected, too (not thoroughly tested yet).
---------------------
r339
Fixed Magical Truck Adventure country check (accidentally removed a line in previous commit).
---------------------
r338
Magical Truck Adventure expects 0x03 to be returned from MIDI control port (thanks, Ville). Game now boots but crashes because VROM texture uploads clobber memory for some reason.
---------------------
r337
Created IEmulator interface, renamed CBus to IBus and CPCIDevice to IPCIDevice. Frames now rendered when emulator paused.
---------------------
r336
tweak frustum planes
---------------------
r335
Changed help text to explain that -sound-volume and -music-volume only take effect when DSB is present
---------------------
r334
Fixes for non-Windows builds: Makefile updated and fixed header files in Vec.cpp
---------------------
r333
revert viewport code
---------------------
r332
change tex format 4
---------------------
r331
Clamping diffuse+ambient light intensity to 1.0 (legacy engine)
---------------------
r330
Added a comment about viewports
---------------------
r329
Fixed texture enable bit (fixes Star Wars light sabers and Sega Rally 2 cones) and added a hack for (and more comments about) color modulation. Scud Race, Sega Rally 2, LA Machineguns, etc. look correct now, but Fighting Vipers 2 shadows ar...
---------------------
r328
Fixed Types.h include
---------------------
r327
Do not print extra hardware message when there is none
---------------------
r326
8-bit texture upload byte selection (thanks to Ville; but not tested yet); code cleanup
---------------------
r325
rgb values were swapped for paletted colours
---------------------
r324
Use the correct texture enable bit
---------------------
r323
Added a comment: observation of Star Wars and Scud Race color modulation issues.
---------------------
r322
Update vs project for encryption code
---------------------
r321
Possible work around for slightly incorrect viewport positions in ECA and harley
---------------------
r320
add missing include
---------------------
r319
Encryption device emulation (thanks to MAME), fixed warnings in Model3.cpp, added a string formatter helper, and updated Win32 GCC Makefile.
---------------------
r318
Added virtual destructor to CDSB
---------------------
r317
Added encryption keys, converted to cstdint types, fixed whitespace
---------------------
r316
Whitespace, cstdint types
---------------------
r315
add missing file
---------------------
r314
Use proper texture wrapping mode for 2d. Stops garbage down the top and left sides. Should really use NPOT texture.
---------------------
r313
add missing project files
---------------------
r312
Allow asymmetric projection matrices. Fixes a bunch of missing effects and bad camera angles in harley. 
---------------------
r311
update project
---------------------
r310
add LOD table data. Maybe we can get clipping planes out of these
---------------------
r309
properly mark dynamic meshes as such
---------------------
r308
allow 8 bit  mono textures to be contour textures, fixes a bunch of missing transparency in harley la riders 
---------------------
r307
clear the rom mesh buffer 
---------------------
r306
Cache rom models, for better performance. 
---------------------
r305

---------------------
r304
WIP
---------------------
r303
fix for bad matrix with NaN
---------------------
r302
Fixed detected axis printf() and compiler warnings (hopefully I did not parenthesize any conditionals incorrectly!)
---------------------
r301
finish front/back face culling code based on matrix determinant. Optimised opengl to avoid redundant state changes.
---------------------
r300
add missing project file
---------------------
r299
fix parenthesis error 
---------------------
r298
add maths functions
---------------------
r297
Update project to vs 2013. Clean compile warnings
---------------------
r296
Remove double copy of shaders
---------------------
r295
fix basic compile errors (with vs)
---------------------
r294
Tweaked Windows gcc Makefile
---------------------
r293
Fixed compiler warnings, whitespace, and moved local variable declarations to site of assignment
---------------------
r292
Include Version.h
---------------------
r291
Fixed typo that broke build
---------------------
r290
Fixed warnings and whitespace
---------------------
r289
Fixed warnings and whitespace
---------------------
r288
Fixed warnings and whitespace
---------------------
r287
Moved lastCycles static int out of header file (fixes compiler warnings)
---------------------
r286
Moved
---------------------
r285
Updated to support new IRender3D interface and added FrameTimings object.
---------------------
r284
CRender3D -> CLegacy3D
---------------------
r283
Update Supermodel.h with graphics path and moved version string to separate header file
---------------------
r282
Removing legacy 3D engine files that were already moved to Graphics/Legacy3D
---------------------
r281
Adding new 3D engine by Ian Curtis. Old engine moved to Graphics/Legacy3D/.
---------------------
r280
Fixed compilation errors involving min and max functions
---------------------
r279
Added registers to debugger: ctr, xer, srr0, srr1, sdr1, imiss, dmiss, hid0, hid1
---------------------
r278
Fixed compiler warnings
---------------------
r277
53c810: do not increment DSP when executing interrupt instruction. Fixes invalid polygons in Virtua Fighter 3. Thanks to Ian Curtis for discovering that the polygons were incorrectly-copied garbage.
---------------------
r276
Fixed display of PowerPC condition code bits in debugger (were backwards) and changed XER to print as hex.
---------------------
r275
Support for loading an arbitrary (non-game) CROM image.
---------------------
r274
Gracefully handle the case when a zip file contains no known Model 3 ROM set.
---------------------
r273
Converted line endings from DOS to UNIX format.
---------------------
r272
Contribution by Luciano Lopez:
---------------------
r271
Some updates to Supermodel made at beginning of the year but only now got around to checking in (better late than never...): - hooked up the remaining controls in Supermodel (except for Magical Truck Adventure which does not work at all yet...
---------------------
r270
Changed output "Pause" to "pause", as it is spelled in MAME, for MAMEHooker.
---------------------
r269
Small tweak to get to compile under GCC (Unix/MacOS)
---------------------
r268
Slight tweak to changes made to sound board synchronisation code in previous commit.  The previous change was necessary to ensure no deadlock when waiting for sound board thread to exit but it introduced unwanted buffer overruns (with the e...
---------------------
r267
- CModel3::StopThreads was rather gracelessly killing threads while they were waiting on their semaphores, which works okay Windows but not on Mac OS-X where it was preventing Supermodel from exiting properly.  Hence, have instead altered S...
---------------------
r266
- Fixed Win32 GCC Makefile. - Reverted Nik's polygon palette index change in Models.cpp. Subtracting 1 was breaking Scud Race. - Added an explicit typecast in Inputs.cpp, which GCC requires for some reason.
---------------------
r265
Committing various small updates that have been hanging around in my source tree for a while now: - Added 'crosshairs' command line and config option. - Added 'vsync' command line and config option (so far only tested on NVidia cards on Win...
---------------------
r264
Somehow John's Build.bat and Clean.bat did not get added in r262. Here they are.
---------------------
r263
- Committing Nik's timing changes: the PowerPC's DEC and TBR now count at the correct rate and time is accurately maintained between calls to the emulator. A VBlank bit was identified in the Real3D status register space and is now timed. Un...
---------------------
r262
Applied a series of patches by John Peterson:
---------------------
r261
Applied Nik's fix for cyclical scene graphs. Improves Harley Davidson, Ski Champ, Emergency Call Ambulance, and Ocean Hunter.
---------------------
r260
Brought in the near clipping plane for Step 1.5+. Objects close to camera are no longer cut-off (e.g., driver arms and steering wheels in cockpit views). Note: This change should probably be applied to Step 1.0 as well in the future. For no...
---------------------
r259
DirectInputSystem's initial state wasn't being initialized properly, which would sometimes result in invalid input values until keyboard or mouse was successfully acquired
---------------------
r258
Added a clear() method to VBORef and removed unsafe memset() clear.
---------------------
r257
This update fixes (hopefully) the last of the texture upload lags that were affecting some games, in particular Daytona 2 and Spikeout. To achieve this UploadTextures no longer clears the model cache when called.  Instead the cache is kept ...
---------------------
r256
Byte swapped sample ROMs. This should fix the audio distortion that many users noticed. The differences are particularly noticeable in Scud Race and Daytona 2.
---------------------
r255
Forgot to update to-do list in previous revision. Added a comment to mark CRender2D::WriteVRAM() as deprecated.
---------------------
r254
Previous "optimization" contained a mistake and made things worse. Removed unnecessary clear of the bottom layer buffer. Now, if there is no bottom layer, it will not be displayed at all and glClear(GL_COLOR_BUFFER_BIT) is used instead.
---------------------
r253
Further optimization/simplification of the 2D renderer's main loop.
---------------------
r252
- Finished cleaning up and optimizing the 2D renderer. - Fixed up color offset register support for new 2D rendering system. Now maintains 2 computed palettes for layers A/A' and B/B'. - Fixed a minor bug in InitPalette(); VRAM was not bein...
---------------------
r251
Contour processing (discarding of pixels when alpha==0) enabled for A4L4 texture formats. Improves smoke and fire in Daytona 2.
---------------------
r250
Default SCSP balance set to 0. Was erroneously set at +50%.
---------------------
r249
- NOTE: In this revision (possibly earlier), I've started to notice some intermittent geometry glitches in Spikeout and slowdown while playing certain characters. - Added multi-texture fragment shader to repo. - Added a multiTexture option ...
---------------------
r248
Updated fragment shaders' floating point comparisons and also some knock-on changes from SVN revision 246. 
---------------------
r247
Added OSD/Video.h to provide OSD-dependent video functionality.  The static functions in here get called by Model3.cpp from within the render thread so that any OSD related rendering can also be run in parallel for a further speed increase....
---------------------
r246
Added support for multiple texture sheets (with up to one per Model 3 texture format) as a rather brute-force way to handle overlapping texture formats in the current 3D engine.  This fixes some corrupt textures in Daytona 2 and Virtua Stri...
---------------------
r245
Added command line options to force windowed mode and to control GPU multi-threading.
---------------------
r244
Added a wide screen hack that can be enabled with the -'wide-screen' argument or WideScreen in the config file.
---------------------
r243
Tweaked help text slightly.
---------------------
r242
Fixed left/right stereo channels -- they were reversed by default.
---------------------
r241
Added front/rear speaker balance (actually the master/slave SCSP balance). Balance setting is stored in CSoundBoardConfig and can be set on the command line (-balance) or config file (Balance). Valid range is 100 (front speaker volume doubl...
---------------------
r240
Added preliminary specular lighting to shaders. The "no spotlight" shader has not yet been updated.
---------------------
r239
Updated some comments regarding the VF3 ROM patches. It seems many of them are no longer necessary. The single necessary patch affects timing (note how the warning screen stays up longer when it is removed). This needs to be investigated --...
---------------------
r238
Documented the tile generator.
---------------------
r237
- Added specular highlight support to the 3D engine. A shininess parameter is now be passed to the shaders. Does not work correctly and I will save the shaders themselves for a future commit. - Added support for layer priorities. Highly uno...
---------------------
r236
Removed unused dirty rectangle code.
---------------------
r235
Removed unused dirty rectangle code.
---------------------
r234
Removed unused dirty rectangle code.
---------------------
r233
Added missing library WbemUuid.lib to VS project linker options 
---------------------
r232
Small correction to lighting model in shaders. Light intensity is no longer clipped.
---------------------
r231
Removed unused (and non-functional) 'stack machine' scene graph traversal.
---------------------
r230
MinGW Makefile now uses cmd prompt commands, not UNIX/msys.
---------------------
r229
Added a MinGW Makefile for users of GCC on Windows.
---------------------
r228
Removed deprecated, unused Turbo68K stuff.
---------------------
r227
Now compiles with MinGW. Among other things, the use of __uuidof() was removed.
---------------------
r226
New multi-threaded rendering changes that parallelise graphics rendering and PPC execution in order to increase performance on multi-core machines. New gpuMultiThreaded config option to enable/disable multi-threaded rendering (enabled by de...
---------------------
r225
Removed unecessary SDL include 
---------------------
r224
Added missing shader source files into VS2008 project (not needed for build, just for reference) 
---------------------
r223
Added CThread::Sleep && CThread::GetTicks methods 
---------------------
r221
Fixed Unix Makefile to link okay on Ubuntu 11.10 (archive libraries needed to be referenced at end of linker options) 
---------------------
r220
Assigned new version number: 0.3a-WIP.
---------------------
r219
Fixed a bug w/ Read16() -- was not casting to a pointer properly, caused Scud Race to crash.
---------------------
r218
Preliminary backface culling fix. Matrices which effectively change the polygon winding without changing the Z component of the polygon normal are tested for when appending items to the display list. If necessary, the polygon winding is cha...
---------------------
r217
Fixed ROM banking -- appears to fix the sounds in Daytona 2 PE and VON2 but otherwise has not been extensively tested. The high 8MB of the 68K address is treated as a single window into the 16MB sample ROM, and can point either to the low o...
---------------------
r216
Fixed a MAGIC_NUMBER comment typo.
---------------------
r215
Small bug fix 
---------------------
r214
Small tweak to improve startup time 
---------------------
r213
Optimisations to improve performance when running with debugger.  Now runs at about 2/3 speed of full speed of emulator, rather than 1/3 like before. 
---------------------
r212
Added missing DirectX include and library paths to project
---------------------
r211
Added quotes around paths in post-build events to allow for spaces in directory names
---------------------
r210
Fixed incorrect ZLib paths 
---------------------
r209
Updated comment in DIR.txt (again!)
---------------------
r208
Updated comment in DIR.txt. 
---------------------
r207
Removed sub-directories of Libraries as are created when user unzips source archives, so might be confusing. 
---------------------
r206
Added DIR.txt to explain purpose of Libraries directories 
---------------------
r205
Added place holder directories for third-party libraries (eg ZLib and SDL) 
---------------------
r204
Changes to Supermodel VS2008 solution to ensure it will now build completely from scratch:  - added projects to build third-party libraries ZLib and SDL (expects source code to be present in Libraries directory)  - moved Musashi68K into its...
---------------------
r203
Added support for joystick sliders to input system. Added extra debugging output to calibration input detection routine (activated by pressing Shift). 
---------------------
r202
Fixed small bug which meant wasn't correctly clearing SCSP structures on initialisation. 
---------------------
r201
Added separate Musashi68K project that compiles and runs m68kmake to build required Musashi68K file. Updated solution so that with above change it will now build Supermodel completely from scratch. 
---------------------
r200
Added DirectInputConstForceLeftMax and DirectInputConstForceRightMax options to allow different force feedback strengths in each direction.  DirectInputConstForceMax still works as before but these new options will override it for the given...
---------------------
r199
Fixed a comment in default ini file.
---------------------
r198
Force feedback fixes in DirectInputSystem.cpp: - Fixed bug which meant right constant force was not being capped to DI_EFFECTS_MAX - Made sure all values are being clamped to sensible ranges 
---------------------
r196
Minor document update (for v0.2a -- the last one this time ;))
---------------------
r195
Documentation for v0.2a completed.
---------------------
r194
- Documentation updates. - Added fflush() to config dialog output where it was missing.
---------------------
r193
- Tweaked some error messages and comments. Hopefully, this is the last update for v0.2a's code. - Documentation updates.
---------------------
r192
Added Visual Studio 2008 Project/Solution files as an alternative way to build Supermodel on Windows. 
---------------------
r190
- Only player 1 crosshair is shown by default now. - Tweaked Makefiles a bit. - More documentation updates. - Changed version string to 0.2a in preparation for the final release :)
---------------------
r189
- Tweaked text in input configuration dialog. - Changed version string to 0.2a-RC3 because RC2 build was sent out to testers earlier.
---------------------
r188
- Getting/setting MPEG playback position also includes the end offset. Hopefully will fix save states from crashing when reloaded sometimes in DSB1 and DSB2 games.
---------------------
r187
- Changed spelling of some messages in drive board code. - Added an extra blank line after info display in CModel3. - Cleaned up comments in Main.cpp. - More document updates. Fixed '-no-music'->'-no-dsb', 'EmulateMusic'->'EmulateDSB'.
---------------------
r186
Commented out verbose/debug output in drive board code for release.
---------------------
r185
More to-do notes for README.txt. 
---------------------
r184
More updates to README.txt. Almost done.
---------------------
r183
Force feedback no longer available as an option on non-Windows builds.
---------------------
r182
- Updates to UNIX and OSX Makefiles.
---------------------
r181
- Changed save state error messages slightly. - Wrapped rows that exceed 80 columns in Supermodel.ini. - Added some member and function comments to a few header files.  - Changed version string to 0.2a-RC2 in anticipation of sending another...
---------------------
r180
Changes to get debugger classes to compile under Linux 
---------------------
r179
Changes to get debugger classes to compile under Linux 
---------------------
r178
Changes to get debugger classes to compile under Linux 
---------------------
r177
Fix to get InputSystem.cpp to compile under Linux again after updates today 
---------------------
r176
Added copyright headers to all debugger files and replaced C standard library headers with c++ versions 
---------------------
r175
Tweaked header comment! 
---------------------
r174
Added copyright header to file 
---------------------
r173
Removed DirectInputEffectsGain force feedback configuration parameter as it's not that useful as it's easier to adjust effects individually 
---------------------
r172
Changes to input system: - altered PrintSettings to output all settings for attached controls, even if no different to defaults - added option on calibration screen to detect an axis simply by moving the axis 
---------------------
r171
Changes to DirectInputSystem: - corrected axis identification code as was not enumerating axes properly in all cases - added fallback which just adds all axes if there is any hint of an irregularity whilst enumerating axes 
---------------------
r170
Un-broke Windows Makefile.
---------------------
r169
Updated UNIX Makefile, fixed some syntax errors.
---------------------
r168
Minor updates to README.txt.
---------------------
r167
More work on README.txt.
---------------------
r166
- Fixed newlines in logs. - Set default PowerPC frequency to 50 MHz. - Minor tweak to help text. - More README.txt updates.
---------------------
r165
Fixed mistake in previous commit! 
---------------------
r164
Added missing memory regions for DSB CPUs 
---------------------
r163
Updated Makefile with new debugger classes. 
---------------------
r162
CModel3::StopThreads() now makes sures threads are paused before deleting thread objects. 
---------------------
r161
Changes to allow debugging of Musashi 68K core: - added methods to attach/debug debugger. - added instruction hook & callback to m68kconf.h and added hooks into CMusashi68KDebug to allow debugger to control execution. - added methods to all...
---------------------
r160
Small cosmetic changes... 
---------------------
r159
Changes to allow debugging of Z80 core: - added methods to attach/detach debugger. - added hooks into CZ80Debug to allow debugger to control execution. - added methods to allow reading/writing of Z80 registers. 
---------------------
r158
Changes due to updates in debugger classes. 
---------------------
r157
Small bug fix in INIFile.cpp - was not parsing negative numbers. 
---------------------
r156
Added includes for new debugger header files Musashi68KDebug.h & Z80Debug.h 
---------------------
r155
Changes to debugger classes: - updated debugger classes to compile again with all recent changes. - improved debugger classes to allow them to work in multi-threaded emulator and be able to handle CPUs on different threads. - added debug cl...
---------------------
r154
Changes to input system: - Joystick axis saturation values can now range from 1-200 rather than just 1-100.  This lets the user make axis less sensitive, if required. - Added joystick axes calibration menus to -config-inputs. - Moved Direct...
---------------------
r153
- Tweaked formatting of help message
---------------------
r152
- Tweaked comments in Supermodel.ini - More work on README.txt - Tweaked some error/info messages. 
---------------------
r151
Small updates:  - added methods to CModel3 to access sound board and drive board  - added methods to CSoundBoard to access 68K and DSB (if attached)  - added methods to CDSB1 & CDSB2 to access Z80 & 68K respectively  - small code tweak in D...
---------------------
r150
- Updated README (far from finished). - Music volume cannot be changed if game has no DSB. - Extra hardware (DSB, drive board) is printed in information display when ROM is loaded.
---------------------
r149
Now always saves feedback effect configuration (this way, defaults do not have to be defined in multiple places).
---------------------
r148
Renamed drive board ROMs to MAME's naming convention.
---------------------
r147
-Updated copyright information in Makefiles. -Updated README.txt revision log.
---------------------
r146
Updated copyright information and added headers to all remaining files except debugger.
---------------------
r145
- Added mutex for MIDI FIFO access to SCSP.cpp.
---------------------
r144
- Changed EmulateSCSP -> EmulateSound and -no-scsp -> -no-sound. - Changed gear shifting behavior: neutral gear has its own button now. - Removed SUPERMODEL_SOUND. - DirectInput is the default input system for Windows now. - Multi-threading...
---------------------
r143
Improved way constant force and vibrate effects are combined to control left and right vibration motors under XInput 
---------------------
r142
Added comment 
---------------------
r141
Added stopping of all force feedback effects on reset (just in case some were playing at that point) 
---------------------
r140
Added a scissor box to clip viewable area. Prevents garbage in the "overscan" areas due to renderer creating viewports that exceed intended display area.
---------------------
r139
Constant force commands for XInput devices fixed so that they will stop when 0 force is applied.
---------------------
r138
Fixed a possible INI file problem: unterminated strings will end at a newline now.
---------------------
r137
Driveboard changes: - added notification message if drive board is disabled when loading incompatible save state - removed some superflous print statements, but have kept in printing out of force feedback commands for now (which have also b...
---------------------
r136
Changes to Audio.cpp: - audio buffer is now kept as full as possible with new audio buffering method rather than just half full like before (this is okay now that buffer overruns have been eliminated) - altered minimum size of audio buffer ...
---------------------
r135
Added note to command line options indicating that force feedback is experimental still 
---------------------
r134
Added configuring of DirectInput and XInput force feedback parameters via config file 
---------------------
r133
Changed drive board logic slightly for stopping vibrate effect as wasn't always cancelling the effect in Daytona 2 
---------------------
r132
Fixed 68K save state problem: pending interrupts were not being saved, sometimes causing the DSB2 to take an invalid interrupt (from the sound board 68K) after loading a save state. Save states are no longer compatible with previous revisio...
---------------------
r131
- Nik's new decoupled audio code with fixes to minimize overruns.  - VBlank timing: increased to 20% of a frame.
---------------------
r130
Fixed bug with loading/saving of state - it wasn't persisting the ram array properly 
---------------------
r129
Fixed bug which was crashing emulator when loading/saving state of games that do not use the drive board 
---------------------
r128
Fixed error reporting for -input-system option.
---------------------
r127
Fixed error message when multiple files detected on command line.
---------------------
r126
DriveBoard changes: - fixed bug in SendConstantForce which was sending incorrect values at times - removed friction effect for now, until can determine its exact command seq - added checking of compatibility of saved state and temporary dis...
---------------------
r125
- Fixed drive board. Now determines whether it is attached and enabled in Reset().
---------------------
r124
- Removed BOOL and replaced it with native C++ type, bool. - Removed TRUE and FALSE, changed to 'true' and 'false' keywords.
---------------------
r123
- Cleaned up game names (primary sets no longer have revision labels in title). - Added volume controls to UI. - Renamed "Sega Rally Controls" to "Sega Rally/Dirt Devils Controls" (even though Dirt Devils has no hand brake). - Hooked up gea...
---------------------
r122
Forgot to disable drive board if ROM not loaded.
---------------------
r121
- Added drive board ROM loading. - Changed EnableFFeedback -> ForceFeedback to be more consistent with the other options. - Updated help text.
---------------------
r120
- Updated help text. - Corrected a typo: EnableFeedback -> EnableFFeedback.
---------------------
r119
Added method to fetch current PC value 
---------------------
r118
Added -force-feedback command line option 
---------------------
r117
Added handling of drive board (if attached) 
---------------------
r116
Added drive board 
---------------------
r115
Added drive board header 
---------------------
r114
Added in drive board config 
---------------------
r113
Initial version of drive board (still work-in-progress) 
---------------------
r112
Changes to CDirectInputSystem: - Added parameters for DirectInput and XInput force feedback effects (although still need to add code to persist them in configuration file) - Added extra friction feedback effect and tidied up existing effect...
---------------------
r111
Added friction effect to feedback enumeration 
---------------------
r110
- Changes to let SCSP.cpp compile under Visual Studio 64-bit - Fixed unsigned int overflow bug in SCSP.cpp that was causing VF3 to crash on selection screen when running 64-bit 
---------------------
r109
Made save states 64-bit safe.
---------------------
r108
Multithreading was always enabled in the CModel3 constructor. Disabled this behavior.
---------------------
r107
First part of SCSP clean up: pointer arithmetic made more safe (I hope). To-do: convert data types to Supermodel standards.
---------------------
r106
Fixed bug which meant that a buffer over-run occuring under certain conditions would leave the write position dangling past the end of the buffer, causing no further sound to be written to the buffer and leaving playback looping indefinitel...
---------------------
r105
- getbass now uses MPC106. - Fixed some error messages in 53C810.cpp. - Fixed stereo (was swapped) and added a flip stereo option.
---------------------
r104
Removed setting of writeWrapped to false always on buffer under-run when underRunLoop is true as this is wrong.  Suspect this may have been causing looping bug. 
---------------------
r103
Inadvertently left SUPERMODEL_LOG_SOUND enabled. Now disabled.
---------------------
r102
- Added Spikeout Final Edition. - Minor change to DSB save state loading: only loopEnd is checked before using MPEG_SetLoop().
---------------------
r101
- Fixed format strings for messages involving __LINE__. - Fixed an MPEG related crash when loading save states. If usingLoopStart is 0, it is important not to call MPEG_SetLoop()! - -input-system is working again. - Changed the format of so...
---------------------
r100
- Added crosshairs for light gun games and disabled mouse cursor in full screen mode (no way to re-enable it now). - Fixed Real3D FIFO buffer overflow bug. - Input system cannot be changed for non-Windows builds (only SDL is available). - A...
---------------------
r99
- Added mappings for individual joysticks in Virtual On for dual-joystick gamepads. - Input settings are now only read from "global" to avoid confusion.
---------------------
r98
Detailed config is logged.
---------------------
r97
Detailed config is logged.
---------------------
r96
- Forgot to add OSDConfig.h. - Changed more C standard library headers to C++ versions.
---------------------
r95
- Program settings are now managed by the CConfig class. - Moved Logger.h to OSD/, cleaned up comments. - Command line and config file parsing have been rewritten. - Began replacing C standard library headers with C++ versions (eg. stdio.h ...
---------------------
r94
Fixed memory pool macros to (hopefully) work with gcc.
---------------------
r93
Musashi context is now cleared in M68KCtx constructor. The internal Musashi context is zeroed out initially but the dynamically allocated external contexts would sometimes be filled with garbage, which would trigger interrupts at the very f...
---------------------
r92
- Fixed DSB2 save states: M68K context wasn't being set. - INI file changes: added support for opening and creating files, for a default section alias, and for sections appearing multiple times in the section list (may prevent some bugs).
---------------------
r91
- DSB2 save state support. - krom made a minor optimization of the byte reverse routines in ppc.cpp.
---------------------
r90
R. Belmont's changes to compile under MacOS and Linux.
---------------------
r89
Save state support for 68K, Z80, sound board, DSB1, and MPEG playback.
---------------------
r88
Save state support for 68K, Z80, sound board, DSB1, and MPEG playback.
---------------------
r87
Added option to loop play position back to beginning of audio buffer when a buffer under-run occurs, rather than stalling output as before.  This option is now the default behaviour. 
---------------------
r86
Protection now works for ecax.
---------------------
r85
Fixed mistake in previous commit!  
---------------------
r84
Small bug fix to get MIDI music to play at correct speed (68K was running at wrong frequency) 
---------------------
r83
- Added a patch for vs215.
---------------------
r82
- krom's patches for vf3a, harleyb, and ecax.
---------------------
r81
- Fixed DSB2 music looping.
---------------------
r80
- Fixed a DSB2 bug: masking of bytes when constructing start/end addresses is now correct (previously was allowing uninitialized garbage into upper 8 bits, which ought to be 0).
---------------------
r79
- Fixed Daytona 2 Advertise song. DSB2 MPEG state machine can now begin playing songs from state ST_GOTA4. - krom: Minor fixes to Main.cpp to support wider ROM set names (up to 9 chars) and compilation under MinGW.
---------------------
r78
- krom added remaining ROM sets. Spikeout Final Edition disabled because it is a bad dump. - Added patches for scuda and scudj. - Added a TO-DO reminder in INIFile.cpp.
---------------------
r77
- skichamp now works, but controls are not hooked up and seems to overload the display lists like many non-working Step 2.x games do. To bypass the drive board error, enter the test menu and exit again. It will reboot and run. - Added some ...
---------------------
r76
- Changes submitted by krom: cleaned up spacing in Games.cpp, optimized byte swapping functions in Supermodel.h, minor changes to fix compiler errors in gcc.
---------------------
r75
- Fixed Ski Champ loading. Fails with a "NO DAUGHTERBOARD" error.
---------------------
r74
- Commented out debug log stuff. Now produces less noisy debug.log files.
---------------------
r73
- Added a C fallback for inline assembly code when the compiler is not MSVC.
---------------------
r72
- Alphabetized ROM sets (thanks to krom) and added DSB ROMs to Spikeout.
---------------------
r71
- Fixed compilation when DEBUG is defined.
---------------------
r70
- Removed an unneeded printf() statement.
---------------------
r69
- Improved 68K interface. Now supports context switching. - CSoundBoard is not derived from CBus. - Optimized sound board memory handlers (now using switch statements). - Added DSB emulation (based on R. Belmont's M1 source code). - Improve...
---------------------
r68
Added instruction cycle counting to new Z80 core 
---------------------
r67
- Textures are no longer decoded for un-textured polygons (not sure if this fixes anything yet).
---------------------
r66
- Textures are no longer decoded for un-textured polygons (not sure if this fixes anything yet).
---------------------
r65
- Sega Bass Fishing now uses an MPC106, allowing it to boot.
---------------------
r64
- Texture offsets: models are now decoded for each individual texture offset state and texture coordinates are adjusted while generating the vertex data. - Model LUT now capable of differentiating between texture offset states (linked list ...
---------------------
r63
- Removed disabling of sound for 64-bit build 
---------------------
r62
- Added check of reserved flag back into PPC stwcx. instruction 
---------------------
r61
- Updated debugger classes to get them to compile with latest changes - Moved CPU debugger for Turbo68K into separate class CTurbo68KDebug and made C68KDebug base class for later addition of Musashi core - Fixed typos in ConsoleDebugger 
---------------------
r60
- Added function-based interface Audio for OSD sound output, together with SDL implementation - Added object interface CThread for OSD threading and synchronization, together with SDL implementation - Added multi-threading to CModel3 so tha...
---------------------
r59
- Fixed for 64-bit build - Added OSD directories into include path -This line, and those below, will be ignored--
---------------------
r58
- Patched out a decrementer loop that was preventing Spikeout from starting up.
---------------------
r57
- CPU/Z80.h included from Supermodel.h
---------------------
r56
- Added Z80 emulator from YAZE-AG. - CBus now has IO bus functions to support the Z80.cpp - Bus.h moved to CPU/ directory.
---------------------
r55
- Added sound ROMs to Daytona 2 (BOTE and PE). - Implemented bank switching for sample ROMs. It is probably incorrect because there is still 2MB of unaccounted-for space. - Added a few important TO-DO notes.
---------------------
r54
- stwcx. now always writes to memory. - Added PPC/68K communication and automatically generated sound IRQs. Sound is now mostly working :) - Increased SCSP MIDI buffer length to 128 to simulate a large FIFO for PPC->68K commands. - Added so...
---------------------
r53

---------------------
r52
- Added the Musashi 68K emulator by Karl Stenerud. Obtained Karl's explicit permission to relicense the code under GPL. - Added a 68K interface, CPU/68K/M68K.*. - Moved Turbo68K source files to CPU/68K/Turbo68K. It is no longer used but is ...
---------------------
r51
Several ROM sets were added (contributed by krom@gbadev.org).
---------------------
r50
Added Spikeout protection data. Added code to detect and abort erroneous 0-length texture transfers (was causing Spikeout to hang the emulator).
---------------------
r49
Texture offsets.
---------------------
r48
Added texture offsets. Vertex shader has been updated in Shaders/Vertex.glsl.
---------------------
r47
Changes to debugger classes:  - Added CPrintBreakpoint Changes to console-based debugger:  - Added new scp command and tidied up some other commands  - Tidied up event logging  - Sorted commands into common groups  - Added ReadMe.txt help f...
---------------------
r46
Changes to debugger classes: - fixed step-out to work properly - added ability to enable/disable debugging of individual CPUs Changes to console-based debugger: - tidied up syntax and split some commands out to make easier to use - implemen...
---------------------
r45
Added version of ConfigInputs that doesn't take display dimensions 
---------------------
r44
New debugger classes - implementations for ppc and Turbo68K CPU cores 
---------------------
r43
Added ENABLE_DEBUGGER option to include built-in console-based debugger in emulator 
---------------------
r42
Changes for new built-in console-based debugger (only compiled in if SUPERMODEL_DEBUGGER defined):  - added code to create debugger object and attach it to system,  - added new command lines options -enter-debugger and -disable-debugger,  -...
---------------------
r41
Added headers for new debugger classes 
---------------------
r40
New CLogger class that handles logging from Supermodel.  Added so that log messages can be routed through debugger if required, rather than printed to console. 
---------------------
r39
Added hooks into debugger classes 
---------------------
r38
Added option to call user supplied debug function before every instruction 
---------------------
r37
Added check for error that occurs when calling CoInitialize from a managed context 
---------------------
r36
Added new UI input to break execution and enter debugger (default mapping Alt+B) 
---------------------
r35
Removed couple of debugger commands that not yet working 
---------------------
r34
New debugger classes 
---------------------
r33
Fixed small bug with formatting in DecodeSigned16 
---------------------
r32
Small change to allow Supermodel to compile under Linux 
---------------------
r31
Small code tidy up (moved some code out of header file into cpp file where it belongs) 
---------------------
r30
Modified Windows Makefile to fix conditional compiling and also to allow building of 64-bit version of emulator.
---------------------
r29
Changes relating to input system:  - Added ability to configure axis min, centre and max values in INI file.  This allows some types of steering wheel pedals that use an inverted value range to work properly with the emulator.  - Modified C...
---------------------
r28
Changes relating to input system: - Fixed bug with mapping of multiple assignments. - Added new ! operator for input mappings, which lets the user specify that an input must not be active. - Added option to print info about input system (su...
---------------------
r27
Importing Makefiles (which are currently somewhat broken).
---------------------
r26
Fixing import mistake: moving source code to trunk/Src.
---------------------
r25
Fixing import mistake: moving source code to trunk/Src.
---------------------
r24
Initial import of new Supermodel code.
---------------------
r23
Original Supermodel code moved to tags/Original.
---------------------
r22
Original Supermodel code moved to tags/Original.
---------------------
r21
Original Supermodel code moved to tags/Original.
---------------------
r20
Original Supermodel code moved to tags/Original.
---------------------
r19
Original Supermodel code moved to tags/Original.
---------------------
r18
Original Supermodel code moved to tags/Original.
---------------------
r17
Original Supermodel code moved to tags/Original.
---------------------
r16
Original Supermodel code moved to tags/Original.
---------------------
r15
Original Supermodel code moved to tags/Original.
---------------------
r13

---------------------
r12

---------------------
r11

---------------------
r10

---------------------
r9

---------------------
r8

---------------------
r7
Fixed VF3 and Scud Race
---------------------
r6

---------------------
r5

---------------------
r4

---------------------
r3

---------------------
r2

---------------------
r1

---------------------